{"componentChunkName":"component---gatsby-theme-spaceout-src-templates-article-template-tsx","path":"/the-sovereign-workstation-agent-building-a-native-ai-platform-with-llama-cpp-rust-and-linux","result":{"pageContext":{"article":{"id":"aa978194-f0b0-57ef-a8ca-be817dbe5bba","slug":"/the-sovereign-workstation-agent-building-a-native-ai-platform-with-llama-cpp-rust-and-linux","secret":false,"title":"The Sovereign Workstation Agent: Building a Native AI Platform with llama.cpp, Rust, and Linux","author":"Luke Celitan","date":"July 20th, 2026","dateForSEO":"2026-07-20T00:00:00.000Z","timeToRead":6,"excerpt":"The industry keeps selling you bigger cloud models. Here's why I built my daily agent to run entirely on my own machine — in Rust, on llama.cpp — and what that buys you that no API ever will","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"The Sovereign Workstation Agent: Building a Native AI Platform with llama.cpp, Rust, and Linux\",\n  \"excerpt\": \"The industry keeps selling you bigger cloud models. Here's why I built my daily agent to run entirely on my own machine — in Rust, on llama.cpp — and what that buys you that no API ever will\",\n  \"date\": \"2026-07-20T00:00:00.000Z\",\n  \"hero\": \"local_agent_cover2.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"AI\", \"Rust\", \"Linux\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"who-owns-your-agents-brain\"\n  }, \"Who owns your agent\\u2019s brain?\"), mdx(\"h2\", {\n    \"id\": \"introduction\"\n  }, \"Introduction\"), mdx(\"p\", null, \"A while back I sat in a room while a very confident vendor explained that our\\nwhole engineering workflow should route through their API. Every prompt, every\\nfile scan, every \\u201Cjust check the logs for me\\u201D \\u2014 all of it, out over the wire to\\na server we didn\\u2019t own, billed per thousand tokens, gated behind a rate limit\\nwritten by someone whose incentives were not ours.\"), mdx(\"p\", null, \"Nobody in that room asked the question I\\u2019ve been asking my whole career, the one\\nI keep coming back to in\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/the-rise-of-the-solo-dev-army\"\n  }, \"The Rise of the Solo Dev Army\"), \": \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"who actually\\ncontrols this thing, and what happens to us when the control isn\\u2019t ours?\"), \"\\nBecause here\\u2019s the pattern I\\u2019ve watched play out a dozen times. The business\\nfalls in love with a capability. It gets wired into everything. And the\\narchitectural cost \\u2014 the dependency, the latency, the fact that your tool stops\\nworking the moment someone else\\u2019s dashboard turns red \\u2014 stays invisible right up\\nuntil the day it isn\\u2019t. Same story as technical debt: silent, compounding, then\\nsuddenly a rewrite.\"), mdx(\"p\", null, \"So I did the unfashionable thing. I stopped pointing my agent at a cloud\\nendpoint and built one that lives entirely on my own hardware. It\\u2019s called\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/MassivDash/ai_tools\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, mdx(\"strong\", {\n    parentName: \"a\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"ai_tools\"))), \" \\u2014 a local agent\\nplatform written in \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Rust (Actix-Web)\"), \" with an \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Astro + Svelte\"), \" frontend,\\ndriving local GGUF models through \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"llama.cpp\")), \". This is a field report on how\\nit\\u2019s built, why \\u201Clocal\\u201D turns out to be an \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"architectural\"), \" decision and not just\\na privacy nicety, and how I taught it to actually touch my Linux box safely.\"), mdx(\"h2\", {\n    \"id\": \"the-bottleneck-nobody-puts-in-the-architecture-diagram\"\n  }, \"The bottleneck nobody puts in the architecture diagram\"), mdx(\"p\", null, \"Let me be precise about why cloud-bound agents hit a wall, because \\u201Cprivacy\\u201D is\\nonly the headline and it\\u2019s not even the most interesting part.\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Privacy and security boundaries.\"), \" You cannot pipe internal infrastructure\\ndetails, private keys, local file structures, or proprietary source into a\\nthird-party API without lighting up every compliance red flag in the\\nbuilding. Not \\u201Cshouldn\\u2019t\\u201D \\u2014 \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"cannot\"), \", if you work anywhere serious.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Latency and rate limits.\"), \" An agentic loop \\u2014 model decides to call a tool,\\nreads the result, decides the next step \\u2014 pays an HTTP round trip on \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"every\"), \"\\nhop. Multiply a few hundred milliseconds across a multi-step loop and the\\nthing feels like it\\u2019s thinking through molasses.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Cost anxiety on high-frequency work.\"), \" Polling, file scanning, background\\nmonitoring: exactly the boring, repetitive jobs an agent is best at are the\\nones that turn into a token meter you nervously watch tick upward.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"No native OS context.\"), \" A cloud model operates in a vacuum. It has no idea\\nwhat\\u2019s eating your RAM, which ports are open, or where that config file is\\nburied in your filesystem. It can \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"talk about\"), \" your machine; it cannot \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"see\"), \"\\nit.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The business only ever watches one dial \\u2014 velocity \\u2014 and cloud APIs are sold\\nas pure velocity. The costs above are the code smell you don\\u2019t notice until\\nthe codebase can\\u2019t move.\")), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Run the same loop locally and in the cloud \\u2014 watch the round trips stack up.\")), mdx(AgentToolCallLoop, {\n    mdxType: \"AgentToolCallLoop\"\n  }), mdx(\"p\", null, \"I\\u2019ve made this argument before in a different costume. Clean architecture, I\\nwrote once, is not decoration \\u2014 bad structure shows up as CPU, RAM, and server\\nbills, and eventually as a client walking away over the running costs. Renting a\\nremote brain for every keystroke is the same mistake at a new altitude. And if\\nyou\\u2019ve read \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/beware-of-the-hype-train\"\n  }, \"Beware of the Hype Train\"), \", you already\\nknow my reflex: when the entire industry is shouting \\u201Cbigger, more parameters,\\nmore cloud,\\u201D that\\u2019s exactly the moment to ask what problem you\\u2019re actually\\ntrying to solve.\"), mdx(\"h2\", {\n    \"id\": \"the-ai_tools-platform\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"h2\"\n  }, \"ai_tools\"), \" platform\"), mdx(\"p\", null, \"The philosophy is boring on purpose: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"high performance, zero external\\ndependencies for inference, strict type safety.\")), mdx(\"p\", null, \"Instead of reaching for a heavy Python framework, the runtime is pure Rust. Rust\\nhandles concurrent tool execution, WebSocket streaming, SQLite persistence, and\\nthe \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"llama.cpp\"), \" server lifecycle with a memory footprint that lets the whole\\nplatform get out of the way of the model \\u2014 which is the only thing that should\\nbe eating your GPU.\"), mdx(Mermaid, {\n    chart: \"graph TD\\nA[Astro / Svelte Web UI] <-->|WebSocket & REST API| B[Actix-Web Rust Server]\\nsubgraph Agent Core Runtime\\nB --> C[Agent Orchestrator & Loop]\\nC --> D[SQLite Memory & History]\\nC --> E[ToolRegistry Dispatcher]\\nend\\nsubgraph Local Infrastructure\\nC <-->|OpenAI-Compatible Spec| F[llama.cpp / llama-server]\\nE --> G[ChromaDB Vector Store]\\nE --> H[Google Suite & Web Tools]\\nE --> I[Linux System Tools]\\nend\\nI -->|Tokio Command| J[Native Linux Kernel & Utilities]\\nF -->|GGUF Quants| K[Apple Silicon / NVIDIA GPU]\",\n    mdxType: \"Mermaid\"\n  }), mdx(\"p\", null, \"Three pieces do the real work:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"llama.cpp\"), \" engine control.\"), mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/MassivDash/ai_tools\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"ai_tools\")), \" is a full control plane\\nover \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"llama.cpp\"), \". It scans your GGUF cache (\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"~/.cache/llama.cpp/\"), \"), lets you\\ntune threads, context size, flash attention, and GPU-layer offload, and\\nbabysits the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"llama-server\"), \" process for you. You own the model \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"and\"), \" the\\nknobs.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Two-tier memory.\"), \" SQLite stores complete conversation turns, active\\ncontext, and tool-call histories, durably. A local \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"ChromaDB\"), \" instance \\u2014 the\\nsame kind of embeddings-on-your-own-hardware setup I keep arguing for \\u2014\\nhandles semantic retrieval and long-term recall. Nothing leaves the box.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"A dynamic tool registry.\"), \" Tools register themselves into a central\\n\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ToolRegistry\"), \". The agent presents the available function definitions to the\\nmodel and executes the calls it decides to make.\")), mdx(\"p\", null, \"That last point is where an agent stops being a chatbot.\"), mdx(\"h2\", {\n    \"id\": \"the-toolbelt\"\n  }, \"The toolbelt\"), mdx(\"p\", null, \"An agent without tools is a very expensive autocomplete. Capabilities in\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ai_tools\"), \" are organized into modules:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Tool category\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Registered capabilities\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Database\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"chromadb\"), \" vector search & collection query\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Development\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"github\"), \" repository & issue search\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Financial & web\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Crypto prices, currency conversion, stock data, Google Books, uptime monitor\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Utility & workspace\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Gmail (read/send), Google Docs, Drive, Sheets, Calendar, Tasks, YouTube, Weather, and a Human-in-the-Loop \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"ask_human\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"System (Linux)\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Native OS control: \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"search_file\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"open_folder\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"list_top_processes\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"grep_search\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"system_status\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"network_ports\"))))), mdx(\"p\", null, \"Google APIs and vector search are useful. But the moment the whole thing clicked\\n\\u2014 the moment a local agent stopped being a novelty and became something I\\nactually reach for at 2pm on a Tuesday \\u2014 was when I let it touch the operating\\nsystem.\"), mdx(\"h2\", {\n    \"id\": \"giving-an-agent-hands-without-giving-it-a-knife\"\n  }, \"Giving an agent hands (without giving it a knife)\"), mdx(\"p\", null, \"There are two ways to give an agent system access, and one of them is a mistake.\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Unconstrained shell.\"), \" Hand the model \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"bash\"), \" and let it run whatever it\\ndreams up. Fast to build. Also one hallucinated \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"rm -rf\"), \" or one malformed\\nstring away from wrecking your environment. This is the \\u201Cwe\\u2019ll think about\\nsafety later\\u201D of agent design, and later never comes.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Structured native wrappers.\"), \" Expose discrete, safe commands with typed\\nparameters, hard timeouts, and truncated output. More work up front. Sleeps\\nat night.\")), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Try to make the agent run something reckless under each model.\")), mdx(GuardrailToggle, {\n    mdxType: \"GuardrailToggle\"\n  }), mdx(\"p\", null, \"I chose the second. Not because I\\u2019m cautious by temperament, but because I\\u2019ve\\nspent enough years watching \\u201Cmove fast\\u201D become \\u201Cexplain to the client why prod\\nis down\\u201D that I flinch at unbounded blast radius. Constraints \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"are\"), \" the feature\\nhere.\"), mdx(\"p\", null, \"Every tool implements one contract:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-rust\"\n  }, \"use async_trait::async_trait;\\nuse anyhow::Result;\\nuse serde_json::Value;\\nuse crate::api::agent::core::types::{ToolCall, ToolCallResult, ToolMetadata};\\n\\n#[async_trait]\\npub trait AgentTool: Send + Sync {\\n    fn metadata(&self) -> &ToolMetadata;\\n    fn get_function_definition(&self) -> Value;\\n    async fn execute(&self, tool_call: &ToolCall) -> Result<ToolCallResult>;\\n    fn is_available(&self) -> bool { true }\\n}\\n\")), mdx(\"p\", null, \"The system tool exposes six actions behind an enum-backed JSON schema, so the\\nmodel can only ever pick from a known menu:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"search_file\"), \" \\u2014 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"find\"), \" files by pattern under a directory.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open_folder\"), \" \\u2014 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"xdg-open\"), \" a folder in the desktop file manager.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"list_top_processes\"), \" \\u2014 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu\"), \", sliced\\nto the top 15 \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"in Rust\"), \", not by shelling out to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"head\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"grep_search\"), \" \\u2014 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"grep -rn\"), \" through text files.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"system_status\"), \" \\u2014 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"df -h\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"free -m\"), \" for instant disk and RAM numbers.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"network_ports\"), \" \\u2014 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ss -tuln\"), \" for listening TCP/UDP sockets.\")), mdx(\"p\", null, \"Here\\u2019s the shape of it (\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"src/backend/src/api/agent/tools/utility/system.rs\"), \"):\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-rust\"\n  }, \"use crate::api::agent::core::types::{ToolCall, ToolCallResult, ToolType};\\nuse crate::api::agent::tools::framework::agent_tool::{AgentTool, ToolCategory, ToolMetadata};\\nuse anyhow::Result;\\nuse async_trait::async_trait;\\nuse serde_json::json;\\nuse std::time::Duration;\\nuse tokio::process::Command;\\nuse tokio::time::timeout;\\n\\npub struct SystemCommandTool {\\n    metadata: ToolMetadata,\\n}\\n\\n#[async_trait]\\nimpl AgentTool for SystemCommandTool {\\n    fn metadata(&self) -> &ToolMetadata {\\n        &self.metadata\\n    }\\n\\n    fn get_function_definition(&self) -> serde_json::Value {\\n        json!({\\n            \\\"name\\\": \\\"system_command\\\",\\n            \\\"description\\\": \\\"Execute safe, everyday Linux system commands.\\\",\\n            \\\"parameters\\\": {\\n                \\\"type\\\": \\\"object\\\",\\n                \\\"properties\\\": {\\n                    \\\"command\\\": {\\n                        \\\"type\\\": \\\"string\\\",\\n                        \\\"description\\\": \\\"The command to run.\\\",\\n                        \\\"enum\\\": [\\n                            \\\"search_file\\\", \\\"open_folder\\\", \\\"list_top_processes\\\",\\n                            \\\"grep_search\\\", \\\"system_status\\\", \\\"network_ports\\\"\\n                        ]\\n                    },\\n                    \\\"path\\\": { \\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"Target directory.\\\" },\\n                    \\\"query\\\": { \\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"File-name or grep pattern.\\\" }\\n                },\\n                \\\"required\\\": [\\\"command\\\"]\\n            }\\n        })\\n    }\\n\\n    async fn execute(&self, tool_call: &ToolCall) -> Result<ToolCallResult> {\\n        let args: serde_json::Value =\\n            serde_json::from_str(&tool_call.function.arguments).unwrap_or(json!({}));\\n\\n        let command = args.get(\\\"command\\\").and_then(|v| v.as_str()).unwrap_or(\\\"\\\");\\n        let path = args.get(\\\"path\\\").and_then(|v| v.as_str()).unwrap_or(\\\".\\\");\\n        let query = args.get(\\\"query\\\").and_then(|v| v.as_str()).unwrap_or(\\\"\\\");\\n\\n        let timeout_duration = Duration::from_secs(30);\\n\\n        let output = match command {\\n            \\\"list_top_processes\\\" => {\\n                let mut cmd = Command::new(\\\"ps\\\");\\n                cmd.args([\\\"-eo\\\", \\\"pid,ppid,cmd,%mem,%cpu\\\", \\\"--sort=-%cpu\\\"]);\\n                let res = process_output(timeout(timeout_duration, cmd.output()).await);\\n                // Safe slice in Rust memory \\u2014 no shell pipeline to `head`\\n                res.lines().take(16).collect::<Vec<&str>>().join(\\\"\\\\n\\\")\\n            }\\n            \\\"network_ports\\\" => {\\n                let mut cmd = Command::new(\\\"ss\\\");\\n                cmd.arg(\\\"-tuln\\\");\\n                process_output(timeout(timeout_duration, cmd.output()).await)\\n            }\\n            // ...search_file, open_folder, grep_search, system_status\\n            _ => format!(\\\"Unknown command: {}\\\", command),\\n        };\\n\\n        Ok(ToolCallResult {\\n            tool_name: self.metadata.name.clone(),\\n            result: output,\\n            tool_call_id: Some(tool_call.id.clone()),\\n        })\\n    }\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"the-three-decisions-that-matter\"\n  }, \"The three decisions that matter\"), mdx(\"p\", null, \"Skim past the boilerplate and there are exactly three choices doing the heavy\\nlifting, and each one is really a decision about \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"failure\"), \":\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Decision\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"What it prevents\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"tokio::process::Command\")), \" (non-blocking)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"A shelling-out tool never stalls the Actix event loop or the WebSocket stream to other connected clients. One user\\u2019s \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"find\"), \" doesn\\u2019t freeze everyone else\\u2019s session.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"tokio::time::timeout\"), \" on every call\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"A command that hangs \\u2014 say, searching an unmounted network share \\u2014 gets cancelled at 30s instead of deadlocking the whole agentic turn.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"No shell pipes; args passed to binaries directly\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Nothing goes through \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"sh -c\"), \". Arguments are handed straight to \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"find\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"ps\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"ss\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"grep\"), \". Shell injection isn\\u2019t mitigated, it\\u2019s \", mdx(\"em\", {\n    parentName: \"td\"\n  }, \"absent\"), \".\")))), mdx(\"p\", null, \"This is the constructive friction I keep banging on about, just moved into the\\ntype system. In a team, the raised eyebrow at code review is what stops the\\nreckless one-liner. When you\\u2019re a solo dev with an AI army \\u2014 the exact scenario\\nI worried about in the Solo Dev Army piece \\u2014 that friction has to come from\\n\", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"somewhere\"), \". Here it comes from an enum, a timeout, and a refusal to concatenate\\nstrings into a shell. The agent is fast because it\\u2019s local; it\\u2019s \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"trustworthy\"), \"\\nbecause the guardrails are compiled in, not prompted in.\"), mdx(\"h2\", {\n    \"id\": \"what-this-actually-feels-like\"\n  }, \"What this actually feels like\"), mdx(\"p\", null, \"Pair an open-weight model \\u2014 \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Qwen 2.5 14B/32B\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Llama 3.1 8B\"), \", a \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"DeepSeek\\nR1 distill\"), \" \\u2014 with local tool execution on Apple Silicon or a dedicated GPU,\\nand the developer experience changes character:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Sub-second feedback.\"), \" An agent checking memory or finding a file answers in\\ntens of milliseconds. The only real latency left is token generation, which is\\n\", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"your\"), \" silicon\\u2019s problem to solve, not a queue in someone else\\u2019s data center.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Zero token-cost anxiety.\"), \" Let it run background loops all day. There is no\\nbilling dashboard climbing in the corner of your eye.\")), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Let both agents idle in a background loop.\")), mdx(CostMeter, {\n    mdxType: \"CostMeter\"\n  }), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Actual autonomy.\"), \" \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"\\u201CMy machine\\u2019s running hot \\u2014 find the top process and\\nopen the project directory with the log file.\\u201D\"), \" The agent runs\\n\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"list_top_processes\"), \", spots the runaway PID, calls \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"search_file\"), \", and\\n\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"xdg-open\"), \"s the folder on my desktop. Seconds. No wire.\")), mdx(\"p\", null, \"None of these models is the biggest on the leaderboard, and that\\u2019s the point.\\nSame lesson I keep relearning: the boring, right-sized tool that runs where you\\nneed it beats the giant that lives somewhere you can\\u2019t reach. Efficiency is the\\nmoat now, not parameter count.\"), mdx(\"h2\", {\n    \"id\": \"final-thoughts\"\n  }, \"Final thoughts\"), mdx(\"p\", null, \"Local models stopped being the budget alternative to cloud APIs a while ago.\\nBolt one to a compiled, high-concurrency language like Rust and a local runtime\\nlike \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"llama.cpp\"), \", and you get something the API-first crowd can\\u2019t ship you at\\nany price: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"a sovereign workstation agent.\"), \" Fast because there\\u2019s no wire.\\nPrivate because nothing leaves the box. Trustworthy because the safety is in the\\ntypes, not in a hopeful system prompt.\"), mdx(\"p\", null, \"The business will keep watching the velocity dial, and the vendors will keep\\nselling more parameters. That\\u2019s fine \\u2014 let them. The quiet, unglamorous move is\\nto own the thing that runs on your own machine, structure its powers\\ndeliberately, and stop renting a brain by the token. That\\u2019s not a step down from\\nthe frontier. It\\u2019s just refusing to build your whole workflow on a foundation\\nyou don\\u2019t control.\"), mdx(\"p\", null, \"_\", \"If you want to kick the tires on\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/MassivDash/ai_tools\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"ai_tools\")), \" or add a native tool of\\nyour own to the registry, check out the\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/MassivDash/ai_tools\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"ai_tools\"), \" GitHub repository\"), \", clone\\nit, and give \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cargo run\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["AI","Rust","Linux"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAFC0lEQVQ4yzWU6U+UVxTG39jWNE36oa1WTdpqQWQdYIBh6zCswyYgDMsMMKyyDQwwOwz7IiK4FZVat9gPtqU1NDZtjN0/mBbrgtRqEavVfmnSv+LX876mH57ce9/33uee5znnXMVgNJKQliZIx2DMwFxcTJ4gNiWVmCQD0YlJlFjKsdnr0BmSKSgpkXk9bV0dHJyZIjDgo7yqkvy9csZgQIlNTkYlVcnihEQ9VFhWRklFBenZOVisNfT0OelwdNLn7iU4FNDm6nd7cyNFsjevqIjE9Pc0DiVSrycqIZFIfQIquRqRSpwkP9NzcjHvLaGipoa6xgaqam20tLfi83vocnZTXVtLblExyRkmsvILyDTno0QlJBAWG0tIdDShMToZY9gVGU2YLg692FBWWUl9UyPOficubz+llRZNbr+rl15BYWmpRmaUy8Pj9CgR8fGEC1SyPXHxpGZmCYlF5DQJSR/zh+eYPzJHIDhAZ4+D4ZFBjbTP1Ycv4CVfPH03Klojyy8tUyUnaJJ1Ymh9U5N4Z6G1ox3/oJ9KkWi12xkdH+HAwWmR205DSzMOp4NSiwWPz4sxN5eMPDO2hkaxwYmiepZiMolP1fR73BTtKyc+NV0izSYiPoEIfSJ54qNdiNQIh0aCtHV2aH6VV1fLhQ10dDtx9PYTHBlB0SWnaJFV2mxCnCnRJomEGPFVT0hMrIzxkiCTZv7w6LBk2iVENZrEOjnn8ftxulzMzM5y5uxpFHNJKZNTEyKlRSPSS3Q6Q4p4GstOSc5bYRGkZmVLQjyaZDWixHQjOyOiqK6rp93hwC3Sr139km+uXkGpsFqpstVikNRHiXxVokq8W7Icn2ZEl2LUPJ2YHCensFhqdJ9mR1xyKmVV1VL0lZqvy5cvMS2FrqilsVsXq5EZRFp4vJ7MgmJKqmyU1dSLbz1Sf7VaPZry8nG4vASGRyQJdomwTjLt48TCvNSkjeLyCpT8fRUYZaPaISqZISMLS10jVfVNtHY6cPQ4iRRf1UT5gkN8+tkSv/78I3dWvuOXn77inyd3+ffZPfaLCrXklHJrLVkFhXK7WWudzPxCWrq6aWjrlAjs0lbF0jlp9Lg8nDl/gaWlT7hx/Xs27q3w5MFNnj28zYenT5AtdqheKzVN7ZRZ7aTlFKA3ZhGTkkG3Z4DxmXkq6pqJSzNhbW5n7MAhnL4gFfUt7O9xMf/+InPHTzI0OUuRpVb2ZaFLlV6+7AnjC38kF9u3c651K6cbX+NKIJwfphK5OhzDtdFYvg5G8e1YHMueUM61bOGjju0s9e3i4553uCjzcy1vcL51i4yvo9wfVHhyJJSnR0N4eiyUvxcieXxkN4/mQ/jrpJ6Nma387la4J3gQUNgIKjwU/DGgsK5i8Pn6fyh3Ay+wsaDn0alU1o/GsH4sjj9PpfD4VDIPj0axccLAxnEd64cjWBvYxF2/wqpP0UYVvwnpWuA51LVyw7eZO2Nvsjqxg9XxbaxNv83N0W2sDG3ldvBV7s+GcGtyJ2uTO7jhfZFb/pdYG3qF1cGXuRXYzPV+hRXPJvn3ggbFbDZhry3nwuIsB8bcjA504+trpawklzpbOZfOzjE77mLh0BCHZ4J4+ztwdDTid3dyfnGOliYr0bo9GI0GTKZUlPTsXHrdHhY/OClN3sXE9BTLy5/jdHtxBwLsl9YaHB7Snq9AMKC9PK3yOLR1dUkfe/EP+OXZk0c60aC17H/g30QdwNvajQAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/a1946/local_agent_cover2.png","srcSet":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/5b37e/local_agent_cover2.png 236w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/49058/local_agent_cover2.png 472w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/a1946/local_agent_cover2.png 944w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/6050d/local_agent_cover2.png 1200w","srcWebp":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/99fbb/local_agent_cover2.webp","srcSetWebp":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/77392/local_agent_cover2.webp 236w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/1f177/local_agent_cover2.webp 472w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/99fbb/local_agent_cover2.webp 944w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/9000d/local_agent_cover2.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%206l1%205%203%201-2%201-2-1v121a1740%201740%200%20004%20128l3%201%202%201c2-1%202%200%202%202%200%203%200%203-4%203l-5-1h3l4-1c1-1%200-1-4-1H0v8l1%208v2c-2%201-1%202%203%202%204%201%204%201%202-1l-3-5v-4h3c4%201%207%202%204%202l-1%201h9l-3-1c-2%200-2%200-1-1v-2c-1-1-2-2-3-1v-1l-1-2%203-1%209%201%205%202c3%200%203%200%203%205s-1%206-3%204l-9-1-1%201c-2%201-3%205-1%205l1-2c0-1%201-2%203-2h6l-4%201c-3%200-4%200-4%202l4%201h4l-4-1c-3-1-2-1%203-1l11-1c4-1%204-1%205%201%200%203%2036%203%2036%201l1-2%201%202%2013%201c12%200%2012%200%2011-2s0-3%203-2c3%200%203%200%203-3%200-4-1-4-3-2h-1v-2l-1-2-1-3c-1-2-1-2%204-2l6%201c1%202%204%201%203-1l-2-2-1-1c0-1-1-1-1%201h-1l-1-5-1%201-1%201h-1l1%201v2l-4%201c-2%200-2%200-1-4%200-3%200-4-2-5l-2-1%202-1%203-1h-3c-4%200-5-2-1-2l4%201%202%201h2l3%202%202%202v1c1%200%203-2%201-3v-1l-2-1c-2%200-3%200-2-1l-2-1v-2c1-1%201-1%203%201l2%202c4%200%207%203%206%205l1%203%203%201%205%202c1%200%202%200%201-1l-2-1-1-1c-1%201-2%200-2-1l-1-1c-1%200-2-1-2-3%200-4%201-4%204%200l4%202c2%200%203-4%202-5-2%200-1-2%201-2%202-1%205%201%205%202-1%201%201%202%202%201%202%200%202%200%201-1s0-1%202-1c3%200%206%204%205%208v3c2%203%200%204-2%202l-2-2v2c-1%202-2%202-6%202l-3%201%202%201c4-1%206%201%206%206v2h2c1%201%201%201%201-1l2-4c1-1%201-1-1-2-4-2-4-3%200-3%203%200%207%205%204%205l2%201%205%203c4%204%205%204%2012%203l8-3%203-1h4c3%200%204%201%204%203h-1c-2-3-3-2-2%200%200%202%200%203%204%203l4%201%202%201%201%201%201%201%201-4%201-6c2-1%202-1-2-2l-9-5%203%201h4c1%200%201-1-1-1l-1-2h1l3-1c1-1%201-1-1-1s-3%200-2-1c2%200%200-2-3-2l-2-2%201-1%203-1c0-2%202-3%204-3l1-1%202-1%206-1%204%201c1-1%200-1-2-1l-3-2c0-2%206-9%209-11l5-4%202-1c2%200%2013-11%2014-14l2-2h1l-1-1v-1l1-1c0-1%201-4%203-4l1-2%203-2v3l3-2%205-2c5-1%2011-5%209-6-2%200-2%200%200-2h4c3%200%203%202%200%202-2%200-2%200-2%202l1%202%201-1c1-1%205-2%206%200l-3%201c-3%201-3%201-1%202l2%201c0%202%200%202%201%201s2-1%204%202l4%204%204%203%204%202%204%202c2%202%202%202%204%201h4c1%203%204%203%206%201%203-2%203-2%205%200%203%201%205%201%205-3%200-2%203-2%204%200%202%202%205%201%205-2%200-2%201-2%205-2%203%200%204-1%204-3s1-2%203-2l4-2c1-5%2017%200%2019%206l5%205c6%203%208%208%204%2013l-2%205c1%201%200%201-1%201h-1c2%202%201%204-2%207l-3%205-1%203v-4l1-4%203-9c3-5%204-10%202-10l-4%204-1%204-4%209-3%207-1%204-2%204-1%203-2%204-2%205c-1%202-1%203-3%202v1c1%201%200%201-3%202l-5%202c-2%200-2-1-1-3v-3l-2%202-2%204-1%201v-3c1-3%200-4-1-4v2c0%203-1%204-5%204l-4%201c-1%201%200%201%203%201l5-1-4%201c-4%202-10%203-6%201%202-1-1-1-8%201l-3-1v-1l-1%202-4%202c-1%200-2%200-1-1l-1-1-3-1c-1-2-3-2-3-1l2%201v2l-4%201%201-1c1-1%201-1-2-1s-3%200-3-4c0-2%200-3-3-4l-4-3c-1-2-4-3-2-1%201%202-14-1-17-3-1-2-3-1-3%201s-2%203-2%200v-1l1-1-2-4-1%201c1%201%200%202-2%203l-2%201c1%202-6%203-7%202l2-1c1-1%201-1-1-1s-3%201-3%202l-2%202v4c0%203%200%203-3%202h-2l2%202%201%201-3-1c-2-1-2-1-3%201-1%203%200%204%201%202h2l1%201h-1l-1%201h-6v-1l5-9c1-1%200-2-1-2v1l-1%202-1-1v-2c2-1-2-2-4-1v-1h-1c-2%200-2%200-1-1v-1l-11-2-9-2h-2l2%202%203%201-3%201c-2%200-2%200-1%201%202%201%205%200%205-1l2-1%202%201%201%201%205%202c3%201%204%205%201%2010v5c1%200%202-1%202-3l1-3c1-1%204%201%204%204%201%201%202%202%2024%202l24-1%202-1%202%201%202%201%201-2c0-2%200-2-3-1l-3-1%201-1%201-2v-2l-1-1c0-1%207-2%209-1%201%200%201%205-1%209%200%202%2013%202%2047%201h2c-5%201-5%201%203%201l8-1h1c0%202%2027%202%2027%200h1c0%202%2030%202%2030%200l1-143V0h-18l-5%204c-5%204-6%205-6%208s0%203-2%204c-2%200-3-4%200-4l1-2-1-1-2-4-1-5v5c1%206%200%206-1%200-2-6-5-7-11-1-4%204-5%205-5%208l-1%204-1-2c0-3%200-4-2-4-2-1-2-1%200-3l4-4%203-2-3-1c-2%200-4%200-5%202l-3%202%201-2V0c-1%200-4%204-3%205l-1%203c-3%202-4%205-2%204h1c0%202-2%202-3%200-1-1-1-1-1%201%200%201%200%203-2%205l-1%203%203-3c3-3%204-4%204-2%201%201-1%204-2%204l-1%201-2%202h-1l-2%203c-2%202-2%202-3%201l1-4%201-1-9%204-3%201c-1-1-1-1%202-4l5-3%201-1%202-2%201-1v-2c1-1%201-1-1-1l-3-1-1-1v1l-1%203h-3l2%202v3h-4c0%204-3%204-6%201s-5-4-10-5l-6-2-1-1c-1%201-1%200-2-2l-1-1v2l-1%201c-2%200-2-3%200-4s2-2%202-3c-1-1-5%203-5%205l-2%201-4-2c-2%200-3-1-2-2l-1-1-1%201-2%201-7-2c-4-1-5-2-3-4l-2%201h-6c-2-1-5-2-7-1l-2-1A1775%201775%200%200096%201L48%200H0v6m193%203l-5%204-3%204h4l4%202h4c-1%202%200%202%202%202l7%203c4%202%206%202%207%201h5l4%201-1-2%202-2c4-1%203-2-2-4l-5-2-15-4-2-1c1-1-4-3-6-2m-12%2014l-6%204-4%204c-4%202-4%202%201%204%204%202%205%202%204%206%200%204%200%204%201%203l1-3c-1-1%200-2%203-4%204-3%204-2%202%201l-3%204h3l4%202c2%202%202%202%204%201%201-2%201-2-1-3-3%200-4-1-1-2l1-4c0-3%200-3-2-2-3%202-4%201-1-1%203-3%203-4%200-3l-2-1%203-1c4%200%209-4%207-5h-4c-1-2-7-2-10%200m63%200c-3%203-4%204-3%205a59%2059%200%200019%205c1%201%203%200%206-2%205-4%205-4-5-7-12-3-13-3-17-1m66%208l-6%204c-2%202-3%203-5%202h-2l3%202%204%203c0%202%200%202%202%201s2-4%201-3l-1-1%205-2%201-1c-1-2%201-3%202-1h2l3-2c1-1%201-1-1-3-3-3-5-3-8%201m-92%200v2l2-1%205-1h6l-3%202c-2%202-4%202-6%202h-5l3%201h4l-3%202c-5%204-1%202%205-2s6-4%2012-4c4%201%205%201%203%202-1%202-1%202%201%202l4%201c2%200%201%202-4%205l-7%203-2-1%202-3%204-2%202-1h-11l-5%201c-3%202-2%202%206%202%202%200%202%200%201%202h-8l-5-2-2-2c-3-2-4-2-5-1s-1%202%202%202l4%201h-5l-6%201-1-1v-1c-2%200-5-1-4-2%201-2-2-1-5%202l-2%202%203-1c1-2%203-3%203-1l1%201c2%201%202%201%200%201l-7%203-3%201%205-1c8-1%2018-1%2019%201h9l8%201v-1l3%201%201%201c-1%201%203%203%206%203h1a116%20116%200%200131%2025c9%209%2019%2024%2015%2022l1%205c3%206%204%208%203%203%200-2%201-1%202%203l3%203c0-3%202-1%202%202h-1l1%208%202%2018%201%2012c2%203%202%201%201-2s-1-3%201-3l3-1v-3l-1-1-1%202-1%202-1-2%201-3%201-4c-1-4-1-4%205-8l5-5-4%202c-5%204-5%204-6-1l-1-3c-2%201-1-3%201-4l2-1-1%204c0%203%200%203%201%201%200-4%202-5%202-2%200%202%200%202%201%201v-7l2%204%201%204v-4l-1-4c-1%200-1-1%201-2%202-2%202-2%203%203v8l1%203c0%202%200%203%201%202%202%200%201-13-1-15v-2c2-1-3-14-8-24-7-13-19-28-29-36-6-4-9-5-5-2l1%202h-2c1%201-2%203-4%202v-1l-1-1h-2l-1-1c1-1%201-1%200%200-2%200-2%200-1-1%200-2%201-2%203%200l5%201v-1c-2%200-3-2-1-2%203%200-2-3-12-8-17-8-40-12-44-8m53%201v1h-1v1l-1%201h-1l-1%201-1%201%201%201v1l1%201h1l5%201%208%201%205%202%203%201%201%201%205%202h2c2-2%203-1%202%201-1%201-1%201%201%201h2c0%201-1%202-2%201v4l-1-1h-2c-1%200-1%201%201%202s2%202%201%202v4h2c2-3%203-3%201-3-2%201-2%200-1-2%202-1%204%201%203%203l1%201%201%201v1c2%200%202-1%200-4l-2-4c-2%200-2%200-1-1%202-1%200-8-2-8h-1l1-1v-2c-2-3-14-7-20-7-9-1-10-1-6-2l4-1-5-1h-4m-28%202l4%202%205%201-4%203c-3%202-3%202-1%203%201%202%201%202-1%202-2%201-2%200-2-1l-2%201c-3%201-3%201%203%203%204%202%209%201%207-1l1-1h2l-1-1c-1-1-1-1%201-1v-1c-1-1-1-1%201-3%203-2%201-3-3%200-1%201-2%202-1%203v1c-3%200-3-2-1-5l3-2-3-1-8-2m17%2015l-6%204%206%203%205%204%203-2c4-3%204-3-1-6s-5-3-2-5l1-1-6%203m-65%205c-4%200-5%201-3%201l3%201v1l2-1%203-1c3%200%203%200%201%201-3%200-5%202-3%202l-1%201c-3%201-3%201%200%200%205%200%205%202%200%202l-12%203%2010-1c3-1%203%200%200%202l-9%201c-8%200-8%200-1-5%202-1%202-2%201-2h-3l-3%201-1%202c2%201-2%203-7%204l-7%201h8c15%200%2036%203%2037%207l-6-1-15-4h-27v1l-7%202%206-1c9-2%2025-2%2035%201%2025%207%2047%2025%2062%2051l3%204v2h2v-1c0-3%200-3%202%202%202%202%203%206%204%209l2%206v-1c0-2%200-3%202-4%203-1%203-1%203%201%201%201%201%200%201-1%200-3%200-3-2-2-2%200-2%200-1-1%202-3%203-2%204%201%201%202%201%202%201%200%200-3%200-3%201-1%201%203%202%202%201-1%200-2-1-3-2-2l2-3c3-3%204-6%203-7l-1-2h2c0-3-1-6-2-5v-1c0-2%200-2-1-1s-1%201-1-1c1-1%201-2-1-2-1%200-2%201-1%202l-1%202-1-2-2-3c-4-3-7-1-5%203%201%202%201%206-1%206-1%200-2-4-1-6%200-2%200-2-2-1l-2%205c0%202%200%202%201%201s1-1%201%201c1%202%202%202%203%201%202%200%202%200%200%202-3%204-3%204-3%201v-1l-3-3-3-5%207-5%207-5%202%203c1%202%204%203%204%200l-2-1v-2h-2c1-3-2-8-4-8s-2%202%200%204c1%202%201%204-1%204v-1l-2-5c-3-3-3-3-6-1l-3%201%202%203c3%204%204%205%206%204l-2%203-6%204%201-1v-2l-2%201-2-2c-6-6-6-5%202-10%206-5%206-5%208-4%201%202%202%202%202%201h2c4%202-1-4-10-13-10-11-13-13-13-9l1%201%204%202%202%203-7%204c-8%207-8%207-12%203l-2-3c1-1%201-1-1-1h-3l1-1h1l1-1v-2h1l1%202%202%202%201%203c-1%201-1%201%201%201%200-1%201-1%200%200l1%201%202-1-1-1v-1h2l6-3%203-2-4-4c-3-2-4-4-3-4%203%201%203%200%200-3-13-9-36-16-50-15m23%2012l-7%205%205%203c5%202%205%202%207%200l2-1-3-2c-2-1-4-2-5-1-2%200-2%200%200-2%202-1%204-2%205-1l1-1c-1-1%203-4%204-2%201%201%201%201-1%201l1%202c2%200%203%201%203%202l-3-1h-2l2%202h3l2-1v-2h2c2%201%202%201-5%206-7%204-7%204-5%206h2c-1-1%2010-10%2013-10l-13-7-8%204m86%200l1%201v2c-2%201-2%201-1%203h5l1-1v2c-1%201%200%204%202%204s3%205%203%207l2%201%201%201-1%201v6l1%204%203-2c3-1%204-2%202-3l-2-3c0-2%200-2%201-1l1%202v-2l-2-6-1-3-1%202c-1%200-1-1%201-4l2-3-3-2c-3-3-4-4-5-2l-2%201v-1c2-3%200-5-4-4l-2-1-1-1-1%202M178%2078l-3%201%203%201%205%204c3%203%203%203%201%203l-2-1-11-7a49%2049%200%2000-17%203c-7%200-7%200-3%203%203%203%205%204%204%201%200-2%207%203%209%206l3%202%201%201c-1%201%201%207%203%209%202%201%203%204%201%203l-1%202%201%204c0%202%201%202%203%200h2l6%201-2-1c-2%200-3-2-3-4%200-1%201-2%202-1l2%201c-1%202%202%205%204%205h3c1%201%201%201-1%201h-3l2%201%203%201h1v2l6%202c4%202%205%202%205%201-1-1%200-2%201-2l1%201%201%203c1%203%201%203%204%201%204-1%205-3%202-3v-1l1-1%203-1h4c2%201%206%200%206-2-1-1%202-1%205-1l1-1-1-1a362%20362%200%2001-4-2h-4l1%202c3%203%200%202-3-2-4-3-7-4-7-1l-3%202c-4%200-4%201-1%204l1%203h-4c-2%200-2%200-1-1%202-1%202-2%201-3-2-3-1-4%201-4s3-1%203-2c1-2%201-2-1-1-4%201-5%201-7-2-1-3-1-3-5-3l-7%201-2%202-1%201-2-2c0-2%201-3%204-3%205%200%206%200%204-4l-2-4%203%203c1%203%205%205%206%203s2-1%203%203%207%205%206%201l-1-2%202%202c2%203%204%203%207%200l2-2v2c0%203%200%203%204%202l5-1h3c3%200%203%200%202-2-1-3-2-3-5-2l-3-1c1-1%200-1-1-1l-3%201h-3l-3%201c-2%203-3%202-5-1-1-2-2-2-5-2-4%201-4-1-1-3%203-1%206%200%206%202%201%202%203%202%2013-1%202%200%202%200%200-3s-10-7-12-7c-3%202-9%202-9%201l4-1c2%200%202%200%200-3-1-2-2-2-6-2h-6l1-1%202-1c1-1%200-1-2-1l-5-1h-12m217%206c-1%203-1%203%201%203s2%200%201%201c-2%200-3%202-1%202%201%200%200%204-2%206-3%202-4%201-3-2%200-2%200-2-1%200-1%203-1%205%201%205l1%201%201%201h1v-1h3c1-1%201-1%201%202l1%203V85c0-2%200-2-1-1h-3m-275%207l-6%202-11%201h-9l-1%201-2%201h-8c-6%201-10%203-8%205l1%202v2l1%201%201-1%204-1c4%200%203-2%200-3-2-1-2-1%201-1l3-1c0-1%207-2%2010-1s4%201%200-1l-1-2%208%204c1%201%203%202%207%201%206%200%2011%201%208%203l-5-1c-6-1-9%200-5%204%202%202%2015%202%2019%200h6c-1%201%202%202%208%201h26l1%201c3-3%200-3-16-3-16%201-20%200-19-2l-3-2c-2%200-4-2-4-3h-1c-1%202-2%202-5%202h-3l3-1c5-1%207-3%204-5-1-1-1-1%201-1s4%201%204%203%201%202%203%200l3-2-4-1-3-1c0-1-2-2-8-1m34%207a228%20228%200%2001-21%202l2%201%201%202h26c5-1%205-1%205-4-1-2-1-2-13-1m233%205c-2%202-2%202-4%201-1-1-1-1-1%201l1%202c1-1%201%200%201%201l1%203v1l2%201c1-1%202%200%202%201l3%201v3l-6-2-6-3c-1%201-1%201%201%202%204%201%204%203%200%207l-4%202-3-1-3-1c-3-3-6-3-9-1l-2%201v-4l1-1c0-2%200-2-2%200-1%201-2%202-1%203l-1%201-1-1c0-2-3-1-3%200-1%201%200%203%202%203l2%204%203%201c3%200%204%203%200%206-2%202-2%202-1%203l1%201%201%201%201-2c-1-1%200-1%201-1%202%200%203%201%203%203l-1%202v1h-3l-3-2c1-1%200-1-1-1s-2%200-1%201l-1%201-3-1v-1l1-1h1c1-1%200-1-1-1v-1c1-1%201-1-1-1s-3-1-3-2h-1c0%202-2%201-1-1%200-3-2-4-4-1-1%201-1%201-1-2l-1-3-2-1-2-2v5l2%201%201%201v4l-1%202-2%201-2%201h3c2%200%203%200%204%203l3%204%202%201-1%201h-2l2%201%203%203c0%202%201%203%203%201h1v2c-3%200-2%202%200%206%202%203%202%205%201%2011v10c0%202%200%203-2%203-5%200-1%206%207%209%207%203%2010%203%2012%200%201-2%201-2%201%200-1%202%200%203%204%204%205%202%208%201%207-2-1-1%200-2%201-2l2-4%202-3v3c-1%202%200%203%201%203h1c-1-1%202-2%203-2l-3%204-2%203%201%202c-1%201%200%202%201%202h2l-1-1%201-1c1-1%202-1%201-2l-1-1%201-1h1v-3l2-1v-3h-4c-2%202-2%200%201-2l2-1h3v-72c-1%201-5-3-5-6%201-2%200-2-2-2-3%200-4-1-3-3%202-3%200-2-2%201m-320%209c0%201-2%203-4%203l-3%201v-1l-1%201v1l1%201v1l3%201c1%201%202%202%204%201l4-1-2%203-2%202c-1-1-3%201-6%202l-4%203%202%202c3%202%205%201%207-3l2-3c2%200%2010-7%2010-8l-1-1-1-1c1-3-7-6-9-4m171%204a898%20898%200%2001-27%2013c-6%203-14%2010-13%2011h1l1%201c0%201%201%203%203%203%202%201%203%201%205-2l3-3-2-2c-3-1-3-1-6%201-3%203-3%202%200-2%203-3%204-4%207-1%203%201%203%201%2010-4l24-12c3-1%203-1%201-3l-3-1-4%201m36%206c-5%204-8%209-6%209l2%203%201%204%205-5%207-5-2-8-1-3-6%205m-199%202l-6%206-1%202c2%202%201%203-2%204-1%201-2%201-1%202l-1%201-4-2v2l3%203%2011-8c1-2%203-4%205-4%202-1%202-1%201-2-2-2-1-3%201-2%204%203%205-1%201-4l-3-3-4%205m169-1l-2%201-13%208-2%202%202%201%203-1c0-1%203%200%205%202l7%202%207%201%202%202%201%202%202%204c3%202%2012%2015%2012%2016%200%202%202%201%202-1%201-9%200-12-8-21-5-6-7-9-2-5%203%203%203%202-1-3-2-3-4-4-4-3h-2c-1-1%200-2%201-2l-2-3c-4-3-6-4-8-2M34%20136c-3%204-7%207-7%206v1h-1l-1%201%201%203%203-2%202-1c-1%201%200%202%202%203l2%201%204-6%206-6%201-2v-2h-3c-2%200-2%200-1-1v-2c-1%200-5%203-8%207m284-5v2h3l-1%201v2c1%202%200%204-1%205v4l-1%201c-1%201-1%200-1-1l-2%201c-2%201-3%202-5%201l-1%201v4l3-2%202-1c0%202%203%201%206-2s5-4%203-1l-2%204c0%202%200%202-1%201h-2c-1%202-1%202-3%201-1-1-5%201-4%203v1l-1%203c1%203%201%203-1%202l4%2011%206%209c0-2%202-3%202-1%200%201%201%202%202%201v5l-2%202%2012-11-2%201-4%202c-2%200-1-2%204-6%207-7%208-8%206-10-3-1-3-5-1-6h3c2-1%208-4%208-6%201-1-2-3-3-1-2%202-5-2-3-4s-1-3-4-1c-3%201-5%200-3-2s1-4-1-3c-4%201-5%201-6-1l-1-1c0%203%201%205%204%205%202%200%202%200%201%202-1%201-1%202%202%204s3%202%201%204l-1%203-4-5-3-6v-1l-1-4-3-7c0-6-1-6-4-3m-87%2012c-2%201-2%202-1%202%202%200%201%201-1%203-2%201-2%201-2-1v-2l-1%201-3%201-6%202-2%203%204%201h4l3-4-3%206c-4%207-4%206%202%209l5%204c1%202%204%202%204%200l1-1c0%201%203-1%205-5%203-4%204-5%204-3v2l1%201h1l3%205c7%208%207%209-1%2017-5%205%200%203%205-2%207-8%208-7%201%202-4%203-6%206-6%207%201%200%2013-13%2017-19%205-7%203-9-2-3-2%203-5%205-5%204-9-10-9-12-7-14s3-4%201-4l-3-1c-2%200-3%201-1%203l1%202h-2c-3-3-3-3%202-9%202-4%203-5%202-6h-2l-1-1h-4v2l-5-1c-7-3-6-3-8-1M30%20153c-3%201-5%204-4%205%200%202-4%203-4%202v1l-3%205-3%206h1c1-3%206-9%207-9v2c-3%202-2%204%200%204l3%201%206-3c1-1%200-2-2-4-2-1-2-2-1-3s1-1%203%201l2%202%203-4c2-4%202-5%200-6s-2-1-3%201h-2l1-2c2-1-1-1-4%201m12%203l2%202%202%202-5-2-4%205c-3%207-9%2015-12%2019v-1l2-4c3-3-2-7-7-4-4%202-6%204-6%206l-1%202c-2%201-3%203%200%202l-1%204c-2%204-3%208-1%205h2c1%202%204%201%208-5l4-3v2c-1%201%201%204%204%204%201%200%206-5%206-7l2-2v-3h2v-3c0-2%200-2%201-1%202%200%202%200%201-3l1-2h2l-1-1v-1l2-2%201-2%202-2c0-3-5-7-6-5m304%202l-4%201v1l1%206c1%203%201%204%202%203v-2c-1-2-1-3%201-3l1%201v2c1%201%201%202-1%203v8l-1-3v-3l-1%202c-1%203-1%204%201%205l1%202-2-1c-1-2-1-2-4%204-3%207-11%2016-12%2014h-1l-2%203-3%201-1-1-2%203-1%202-3-1c-1-2-1-3%201-3v-1c-1%200-1-1%201-2l3-1h-3l-4%202c0%202-1%202-3%201l-2%201v1h2l3%201%201%202-1%201-3%202h3c2%200%202%200%200%201s-3%203-1%202c1-1%202%200%203%201%202%202%203%201%204-2%201-2%202-3%203-2%204%201%205%201%205-2l2-4h3c-2%202%203%203%204%201l1-3v-3c0-2%200-2-1-1l-1%205c1-1%201-1%200%200%200%203-2%202-2%200%200-3%203-10%204-8s6%200%205-2l-2-2v-1h3v-1l2-1c2-1%204%200%205%203l1%201-2-6-2-5%202-2c2-2%202-2%201-4-3-3-2-6%201-3%202%201%202%201%202-1s-1-3-3-4-3-5%200-4l2-1-3-4-3%201m-26%203l-2%203%201-1%201-1v2c-1%201-1%201%201%201%203-1%203%200%200%202-3%201-4%201-4-2l-3-1c-2%200-2%200%201%207%202%205%203%206%203%204%201-1%201-1%202%201l1%202%204-3%203-4%202-4c3-2%204-5%202-3l-1-1h-2c-3%203-4%202-1%200%202-3%202-4-1-2-1%201-2%202-3%201s-1-1%201-2v-2l-5%203m-119%204l-5%206-5%207c-3%203-3%203-1%203%202%201%202%201%201%203v1l2-2%202-2-1%202-2%204c-2%202-2%202%202%204%203%203%203%203%205%201%205-4%201%201-4%207-6%206-7%208-4%207h1l2%201c2%200%203%201%203%202%201%201%201%202%202%201l2%201%202%201c2%200%200-2-3-3-1-1-2-1-1-2l1-1c0%201%202%200%203-2s3-3%203-2l2-1h-1c-2%200-1-2%201-3h1l3-2c3-4%203-4%2010%204l7%207-6-8c-5-6-7-9-6-10%201%200%201-1-1-1v-3c1-1%203-2%204-1%201%200%208-6%208-8s-4-6-6-6l-1-1c0-1-1-2-3-2-3-1-7%202-7%205%201%202-2%206-4%206l-4%203-2%201%202-2%201-3c0-1-5-3-6-1l-1%201v-3c1-3%201-3%202-2%203%203%207%203%209%200l2-2-5-1-3-1%202-2%201-2%203-1c1-2-4-1-7%202m152%2028l2%201%204%203%202%201h2l5%202%205%202%203%202%203%201h-3c-3-1-3-1-2%201l4%203c3%201%203%201%202%202v1c2%200%204%200%2013%205%206%203%207%203%207%206l-1%203-1%202%201%202%201%2011%201%2012a336%20336%200%2000-1-44c0%205-1%207-2%208l-1-1-1-2h-4v-1l-5-4c-4-1-6-2-7-4-1-3-7-6-10-6l-5-2-12-4m-55%201l-1%202-1%202-1%202-1%203c-2%201-1%202%203%203%205%203%203%204-4%201l-2%201-1%201c-2%201-2%201-1%202v3c0%202%201%203%204%200%202-1%205-1%204%201-1%203%202%203%204%201s4-3%205%200l3%201c2-1%201-4%200-4-2%200-3-2-1-2%202-2%201-3-2-2-2%200-3%200-5-2l-3-2v-4c3-5%203-8%202-8l-2%201m-133%2015c-3%204-4%205-1%205l1-1c-1%200%200-2%202-3%203-2%204-2%201%202l-2%202%202%201%202%202c-1%202%201%204%203%204s4%202%203%204c0%202%207-6%208-8%200-2%200-2%201-1h1v-1l-1-2h-3l-2-1c1-1%200-2-1-3l3%201h5l-2-2%201-1%202-2-4%201h-14c-1-2-2-1-5%203m-3%207l-3%205c-3%203-3%203-1%204%203%200%203%200-1%205-3%204-5%2010-4%2011%202%200%203-1%203-3l1-1%201-2h1l1-2h-2l-2%201%202-3c4-2%208-10%207-12-1-3-3-5-3-3m5%208l-1%201-2%203-2%204-3%206-2%202-2%203v3c2%202%204%201%207-3%204-6%205-6%203-1-1%202-2%204-1%205l-1%201c-2%200-4%203-4%206%200%202%200%202%202%200l8-13-1-3c-1%200-2-1-1-2l4-5c1%201%202%200%204-3%201-2%201-2-2-4-4-2-6-3-6%200M1%20362c1%200%201%201%200%200l-1%201%201%201v1l-1%201%202%201h1l-1%201c-3%200-3%2021%200%2023v4c-2%200-3%202-1%203%202%202%2020%202%2021%201h1l2%201v-3c1%200%201-1-1-2-2-2-2-2%206-5l7-2%204%204%204%202%201-2v2h1l2-2-1-2h-2c-3%201-7-2-5-3v-1h1l4-1v-1l-1-1%204%201c2%202%202%202%200%204-1%202-1%202%201%202%201%200%202%200%201-2l7%205c8%206%208%207%2014%207%205%200%206%200%206-2h1c0%202%201%202%204%202l4-1v-7c1-6%200-8-2-5%200%203-2%201-1-1%200-3-2-2-4%201l-1%201c0-5%201-7%205-8l4-2h-4l-4%201-1%202-1%202-2%202c-1%202-1%202-1-1l1-3%201-2v-3l1%201%208-3%205-3h4l3%201%201%201-4%202-1%201c1%200%201%201-1%203l-4%202h-1l-2%201-2%201%207-1c4-2%206-2%208-1%201%201%201%201-1%202l-5%201v1c1%201%2016-4%2020-7h-2l-7%201c-4%201-4%201-2-1%201-1%201-1-1-1l-4%202-2-1%207-3%206-3h1l3-2h2l-1%202h1c2%200%203%200%202%201%200%201%201%201%206-1l1%201h1c4-2%205%201%204%206l-3%204v4c0%203%200%204-1%203l-1-1v2c1%202%201%206-1%205h-2v1l1%202%2012%201c12%200%2013-1%2011-2l-2-2h3c2-1%202-1%201-2s-4%200-7%201c-6%202-9%203-8%201l-1-1-2-2c0-1%201-2%202-1%202%200%202%200%201-1s-2-2-1-5h3l-1-1-1-2%202%201%202%202v-2c-2-2%200-4%204-2%203%202%203%202%203%200%201-1%201-2%203-1%203%201%204%202%203%204-2%203%200%204%201%201%201-2%202-2%204%200%203%201%203%201%202%202v1c2-1%203%203%201%206%200%203-5%204-6%203l-2-1c-2%201%200%203%202%203l11-4c13-6%2013-6%2012-1v5h8c7%200%2010%200%2013-2%207-3%2010-3%2010-2l-2%203c-1%201-1%201%201%201l5-1c1-2%202-2%204%200l11%201h8l-7-4c-8-4-8-5-7-3l-1%201-1-1v-2c-5-3%203%200%2011%204l11%205c1%200-1-2-11-7-3-1-4-3-2-3l10%205%2012%205c2%200%202%200%200-1-3-1-3-2-2-6v-3l-1%201-7-3-6-4c2-1%200-2-2-1l-2%202-2%201-4%202c-2%202-2%202-3%201v-3c1-2%200-2-3-1v4h-3c-1-1-5%201-5%203l-1%201-5%201c-7%203-8%203-7%201v-3l-1%203-2%202%201-4v-3l-1-2c1-2-1-3-2%200l-2%201h-3c-1%202-2%201-1-2l-1-3v-1c1-1%201-1-1-1-2%201-2%200-2-1%200-2%200-2-2-2-3%201-23-10-21-11l-1-1v-3h-4c-1%200-1-1%201-2l3-2h-24l-29%201c-3%200-5%201-9%204-5%204-14%209-15%208l1-6%201-6-10-1c-1%209-3%2021-5%2022h3c2-1%203-1%203%201v14c0%202%200%202-3%200l-3-4h-1v-1h-1v-1h-1l-1-1-2-2c-3-2-3-2%202-4l4-1-4%201c-7%201-10%201-9-1h-1l-1-1v-1h-1l-1%201v-2c0-2-9%201-10%202-1%202-6%203-7%202s3-4%204-3l1-2v-2l1%202%201%201v-7l-2%201-2%201-1%202c1%201%200%202-1%203-3%202-3%202-4-1%200-2%200-3-1-2h-1l2-3v-4l2-1h1l2-1h2l1-1v2h2c2-1%202-2%200-2-1-1-1-1%201-1h2l1-1c0-2%203-3%207-3l4-1c2-1-11-1-16%201l-4-1-2%201-4%202-3%202h-2c-1-2-1-3%202-4s2-1-12-1c-8-1-10%200-10%201m167-1l9%205%2010%207c2%202%203%202%203%201h3c1%201%202%200%204-1%207-5%2014-7%2013-4-1%202%200%202%202%201v-1l-1-1c2-2-1-3-4-2h-5l-1%201-1-1v-3h-2l-2%201-7-2-3-1h-7l-1-1-1%202c0%202-1%202-5%200-3-2-4-2-4-1m78%201v2c1%200-3%2016-5%2017l-4-1-4-2a215%20215%200%200028%2016c1%201%202%201%206-1l4-1%201-1h1l1-1h1l1-1h1v-1l1-1c1%201%202%200%202-2%200-3%201-5%202-4l-1%203v3l1-1h1l1-1%201-1%201%201%202%201%202%202%201%201v1h-1v4l-2-1-2-2v1l-1%201v1l-2%201c-1-1-2%200-3%201-1%202-2%202-5%201h-2l2%201c3%202%205%202%205%201h2c2%201%204%200%2010-3%209-5%2011-5%2010-1l-3%203c-6%200-3%202%203%202l7-1v-1l-2-2h-1c0%202-3%200-2-2%200-1%201-2%202-1%203%201%200-2-4-3l-3-3h3l9%206%207%205h-2l7%202c5%200%205%200%206-4l1-5-3-1c-3-3-12-5-11-3h-2l-3-3-5-3c-5-3-6-4-3-5v-5l1-2c-1-3-7-7-11-7l-2-1-3-1h-2l2%202%202%202h-1c-2-1-2-1-2%201s0%203-4%202c-4%200-4%200-3%202%201%201%202%202%204%201%202%200%203%200%202%202l1%201v2h-2l-1%201c-1%203-3%204-3%201l-2%202c-2%204-2%204-3%200l1-2%202-2%202-4-5-2-5-1v-1l-1-1h-1l-1-1c-3%201-6%200-3-1h-1c-3%200-3%200-2-1v-1l-4-1h-3c-2%200%200%202%206%205%207%203%208%204%207%206l-2%202-3-3h-1c-1%201-1%201-1-1l-2-1c-6%200-7-1-7-2h-2l-1%201c1%201%200%201-1%201v-1l1-4c0-3-3-5-3-2m75-1v8c1-1%201-1%205%201%203%202%203%202%201%202h-2l2%201c1%201%204%202%205%201%202%200%203%200%202%201l2%202c4%202%202%202-4%200l-6-1c0%202-1%202-4%200-8-3-5%200%203%204l9%204%202%201v3l2%201-1%201c-1-1-2%200-2%204l-1%204%202-4c1-2%201-3%202-2%200%201%201%202%203%202l2%202c0%204%203%204%2030%204h27v-40h-40c-34%200-40%200-39%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAFC0lEQVQ4yzWU6U+UVxTG39jWNE36oa1WTdpqQWQdYIBh6zCswyYgDMsMMKyyDQwwOwz7IiK4FZVat9gPtqU1NDZtjN0/mBbrgtRqEavVfmnSv+LX876mH57ce9/33uee5znnXMVgNJKQliZIx2DMwFxcTJ4gNiWVmCQD0YlJlFjKsdnr0BmSKSgpkXk9bV0dHJyZIjDgo7yqkvy9csZgQIlNTkYlVcnihEQ9VFhWRklFBenZOVisNfT0OelwdNLn7iU4FNDm6nd7cyNFsjevqIjE9Pc0DiVSrycqIZFIfQIquRqRSpwkP9NzcjHvLaGipoa6xgaqam20tLfi83vocnZTXVtLblExyRkmsvILyDTno0QlJBAWG0tIdDShMToZY9gVGU2YLg692FBWWUl9UyPOficubz+llRZNbr+rl15BYWmpRmaUy8Pj9CgR8fGEC1SyPXHxpGZmCYlF5DQJSR/zh+eYPzJHIDhAZ4+D4ZFBjbTP1Ycv4CVfPH03Klojyy8tUyUnaJJ1Ymh9U5N4Z6G1ox3/oJ9KkWi12xkdH+HAwWmR205DSzMOp4NSiwWPz4sxN5eMPDO2hkaxwYmiepZiMolP1fR73BTtKyc+NV0izSYiPoEIfSJ54qNdiNQIh0aCtHV2aH6VV1fLhQ10dDtx9PYTHBlB0SWnaJFV2mxCnCnRJomEGPFVT0hMrIzxkiCTZv7w6LBk2iVENZrEOjnn8ftxulzMzM5y5uxpFHNJKZNTEyKlRSPSS3Q6Q4p4GstOSc5bYRGkZmVLQjyaZDWixHQjOyOiqK6rp93hwC3Sr139km+uXkGpsFqpstVikNRHiXxVokq8W7Icn2ZEl2LUPJ2YHCensFhqdJ9mR1xyKmVV1VL0lZqvy5cvMS2FrqilsVsXq5EZRFp4vJ7MgmJKqmyU1dSLbz1Sf7VaPZry8nG4vASGRyQJdomwTjLt48TCvNSkjeLyCpT8fRUYZaPaISqZISMLS10jVfVNtHY6cPQ4iRRf1UT5gkN8+tkSv/78I3dWvuOXn77inyd3+ffZPfaLCrXklHJrLVkFhXK7WWudzPxCWrq6aWjrlAjs0lbF0jlp9Lg8nDl/gaWlT7hx/Xs27q3w5MFNnj28zYenT5AtdqheKzVN7ZRZ7aTlFKA3ZhGTkkG3Z4DxmXkq6pqJSzNhbW5n7MAhnL4gFfUt7O9xMf/+InPHTzI0OUuRpVb2ZaFLlV6+7AnjC38kF9u3c651K6cbX+NKIJwfphK5OhzDtdFYvg5G8e1YHMueUM61bOGjju0s9e3i4553uCjzcy1vcL51i4yvo9wfVHhyJJSnR0N4eiyUvxcieXxkN4/mQ/jrpJ6Nma387la4J3gQUNgIKjwU/DGgsK5i8Pn6fyh3Ay+wsaDn0alU1o/GsH4sjj9PpfD4VDIPj0axccLAxnEd64cjWBvYxF2/wqpP0UYVvwnpWuA51LVyw7eZO2Nvsjqxg9XxbaxNv83N0W2sDG3ldvBV7s+GcGtyJ2uTO7jhfZFb/pdYG3qF1cGXuRXYzPV+hRXPJvn3ggbFbDZhry3nwuIsB8bcjA504+trpawklzpbOZfOzjE77mLh0BCHZ4J4+ztwdDTid3dyfnGOliYr0bo9GI0GTKZUlPTsXHrdHhY/OClN3sXE9BTLy5/jdHtxBwLsl9YaHB7Snq9AMKC9PK3yOLR1dUkfe/EP+OXZk0c60aC17H/g30QdwNvajQAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/3ddd4/local_agent_cover2.png","srcSet":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/078a8/local_agent_cover2.png 163w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/e56da/local_agent_cover2.png 327w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/3ddd4/local_agent_cover2.png 653w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/c5cc7/local_agent_cover2.png 980w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/6050d/local_agent_cover2.png 1200w","srcWebp":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/0acdf/local_agent_cover2.webp","srcSetWebp":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/ac59e/local_agent_cover2.webp 163w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/7660b/local_agent_cover2.webp 327w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/0acdf/local_agent_cover2.webp 653w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/75470/local_agent_cover2.webp 980w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/9000d/local_agent_cover2.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%206l1%205%203%201-2%201-2-1v121a1740%201740%200%20004%20128l3%201%202%201c2-1%202%200%202%202%200%203%200%203-4%203l-5-1h3l4-1c1-1%200-1-4-1H0v8l1%208v2c-2%201-1%202%203%202%204%201%204%201%202-1l-3-5v-4h3c4%201%207%202%204%202l-1%201h9l-3-1c-2%200-2%200-1-1v-2c-1-1-2-2-3-1v-1l-1-2%203-1%209%201%205%202c3%200%203%200%203%205s-1%206-3%204l-9-1-1%201c-2%201-3%205-1%205l1-2c0-1%201-2%203-2h6l-4%201c-3%200-4%200-4%202l4%201h4l-4-1c-3-1-2-1%203-1l11-1c4-1%204-1%205%201%200%203%2036%203%2036%201l1-2%201%202%2013%201c12%200%2012%200%2011-2s0-3%203-2c3%200%203%200%203-3%200-4-1-4-3-2h-1v-2l-1-2-1-3c-1-2-1-2%204-2l6%201c1%202%204%201%203-1l-2-2-1-1c0-1-1-1-1%201h-1l-1-5-1%201-1%201h-1l1%201v2l-4%201c-2%200-2%200-1-4%200-3%200-4-2-5l-2-1%202-1%203-1h-3c-4%200-5-2-1-2l4%201%202%201h2l3%202%202%202v1c1%200%203-2%201-3v-1l-2-1c-2%200-3%200-2-1l-2-1v-2c1-1%201-1%203%201l2%202c4%200%207%203%206%205l1%203%203%201%205%202c1%200%202%200%201-1l-2-1-1-1c-1%201-2%200-2-1l-1-1c-1%200-2-1-2-3%200-4%201-4%204%200l4%202c2%200%203-4%202-5-2%200-1-2%201-2%202-1%205%201%205%202-1%201%201%202%202%201%202%200%202%200%201-1s0-1%202-1c3%200%206%204%205%208v3c2%203%200%204-2%202l-2-2v2c-1%202-2%202-6%202l-3%201%202%201c4-1%206%201%206%206v2h2c1%201%201%201%201-1l2-4c1-1%201-1-1-2-4-2-4-3%200-3%203%200%207%205%204%205l2%201%205%203c4%204%205%204%2012%203l8-3%203-1h4c3%200%204%201%204%203h-1c-2-3-3-2-2%200%200%202%200%203%204%203l4%201%202%201%201%201%201%201%201-4%201-6c2-1%202-1-2-2l-9-5%203%201h4c1%200%201-1-1-1l-1-2h1l3-1c1-1%201-1-1-1s-3%200-2-1c2%200%200-2-3-2l-2-2%201-1%203-1c0-2%202-3%204-3l1-1%202-1%206-1%204%201c1-1%200-1-2-1l-3-2c0-2%206-9%209-11l5-4%202-1c2%200%2013-11%2014-14l2-2h1l-1-1v-1l1-1c0-1%201-4%203-4l1-2%203-2v3l3-2%205-2c5-1%2011-5%209-6-2%200-2%200%200-2h4c3%200%203%202%200%202-2%200-2%200-2%202l1%202%201-1c1-1%205-2%206%200l-3%201c-3%201-3%201-1%202l2%201c0%202%200%202%201%201s2-1%204%202l4%204%204%203%204%202%204%202c2%202%202%202%204%201h4c1%203%204%203%206%201%203-2%203-2%205%200%203%201%205%201%205-3%200-2%203-2%204%200%202%202%205%201%205-2%200-2%201-2%205-2%203%200%204-1%204-3s1-2%203-2l4-2c1-5%2017%200%2019%206l5%205c6%203%208%208%204%2013l-2%205c1%201%200%201-1%201h-1c2%202%201%204-2%207l-3%205-1%203v-4l1-4%203-9c3-5%204-10%202-10l-4%204-1%204-4%209-3%207-1%204-2%204-1%203-2%204-2%205c-1%202-1%203-3%202v1c1%201%200%201-3%202l-5%202c-2%200-2-1-1-3v-3l-2%202-2%204-1%201v-3c1-3%200-4-1-4v2c0%203-1%204-5%204l-4%201c-1%201%200%201%203%201l5-1-4%201c-4%202-10%203-6%201%202-1-1-1-8%201l-3-1v-1l-1%202-4%202c-1%200-2%200-1-1l-1-1-3-1c-1-2-3-2-3-1l2%201v2l-4%201%201-1c1-1%201-1-2-1s-3%200-3-4c0-2%200-3-3-4l-4-3c-1-2-4-3-2-1%201%202-14-1-17-3-1-2-3-1-3%201s-2%203-2%200v-1l1-1-2-4-1%201c1%201%200%202-2%203l-2%201c1%202-6%203-7%202l2-1c1-1%201-1-1-1s-3%201-3%202l-2%202v4c0%203%200%203-3%202h-2l2%202%201%201-3-1c-2-1-2-1-3%201-1%203%200%204%201%202h2l1%201h-1l-1%201h-6v-1l5-9c1-1%200-2-1-2v1l-1%202-1-1v-2c2-1-2-2-4-1v-1h-1c-2%200-2%200-1-1v-1l-11-2-9-2h-2l2%202%203%201-3%201c-2%200-2%200-1%201%202%201%205%200%205-1l2-1%202%201%201%201%205%202c3%201%204%205%201%2010v5c1%200%202-1%202-3l1-3c1-1%204%201%204%204%201%201%202%202%2024%202l24-1%202-1%202%201%202%201%201-2c0-2%200-2-3-1l-3-1%201-1%201-2v-2l-1-1c0-1%207-2%209-1%201%200%201%205-1%209%200%202%2013%202%2047%201h2c-5%201-5%201%203%201l8-1h1c0%202%2027%202%2027%200h1c0%202%2030%202%2030%200l1-143V0h-18l-5%204c-5%204-6%205-6%208s0%203-2%204c-2%200-3-4%200-4l1-2-1-1-2-4-1-5v5c1%206%200%206-1%200-2-6-5-7-11-1-4%204-5%205-5%208l-1%204-1-2c0-3%200-4-2-4-2-1-2-1%200-3l4-4%203-2-3-1c-2%200-4%200-5%202l-3%202%201-2V0c-1%200-4%204-3%205l-1%203c-3%202-4%205-2%204h1c0%202-2%202-3%200-1-1-1-1-1%201%200%201%200%203-2%205l-1%203%203-3c3-3%204-4%204-2%201%201-1%204-2%204l-1%201-2%202h-1l-2%203c-2%202-2%202-3%201l1-4%201-1-9%204-3%201c-1-1-1-1%202-4l5-3%201-1%202-2%201-1v-2c1-1%201-1-1-1l-3-1-1-1v1l-1%203h-3l2%202v3h-4c0%204-3%204-6%201s-5-4-10-5l-6-2-1-1c-1%201-1%200-2-2l-1-1v2l-1%201c-2%200-2-3%200-4s2-2%202-3c-1-1-5%203-5%205l-2%201-4-2c-2%200-3-1-2-2l-1-1-1%201-2%201-7-2c-4-1-5-2-3-4l-2%201h-6c-2-1-5-2-7-1l-2-1A1775%201775%200%200096%201L48%200H0v6m193%203l-5%204-3%204h4l4%202h4c-1%202%200%202%202%202l7%203c4%202%206%202%207%201h5l4%201-1-2%202-2c4-1%203-2-2-4l-5-2-15-4-2-1c1-1-4-3-6-2m-12%2014l-6%204-4%204c-4%202-4%202%201%204%204%202%205%202%204%206%200%204%200%204%201%203l1-3c-1-1%200-2%203-4%204-3%204-2%202%201l-3%204h3l4%202c2%202%202%202%204%201%201-2%201-2-1-3-3%200-4-1-1-2l1-4c0-3%200-3-2-2-3%202-4%201-1-1%203-3%203-4%200-3l-2-1%203-1c4%200%209-4%207-5h-4c-1-2-7-2-10%200m63%200c-3%203-4%204-3%205a59%2059%200%200019%205c1%201%203%200%206-2%205-4%205-4-5-7-12-3-13-3-17-1m66%208l-6%204c-2%202-3%203-5%202h-2l3%202%204%203c0%202%200%202%202%201s2-4%201-3l-1-1%205-2%201-1c-1-2%201-3%202-1h2l3-2c1-1%201-1-1-3-3-3-5-3-8%201m-92%200v2l2-1%205-1h6l-3%202c-2%202-4%202-6%202h-5l3%201h4l-3%202c-5%204-1%202%205-2s6-4%2012-4c4%201%205%201%203%202-1%202-1%202%201%202l4%201c2%200%201%202-4%205l-7%203-2-1%202-3%204-2%202-1h-11l-5%201c-3%202-2%202%206%202%202%200%202%200%201%202h-8l-5-2-2-2c-3-2-4-2-5-1s-1%202%202%202l4%201h-5l-6%201-1-1v-1c-2%200-5-1-4-2%201-2-2-1-5%202l-2%202%203-1c1-2%203-3%203-1l1%201c2%201%202%201%200%201l-7%203-3%201%205-1c8-1%2018-1%2019%201h9l8%201v-1l3%201%201%201c-1%201%203%203%206%203h1a116%20116%200%200131%2025c9%209%2019%2024%2015%2022l1%205c3%206%204%208%203%203%200-2%201-1%202%203l3%203c0-3%202-1%202%202h-1l1%208%202%2018%201%2012c2%203%202%201%201-2s-1-3%201-3l3-1v-3l-1-1-1%202-1%202-1-2%201-3%201-4c-1-4-1-4%205-8l5-5-4%202c-5%204-5%204-6-1l-1-3c-2%201-1-3%201-4l2-1-1%204c0%203%200%203%201%201%200-4%202-5%202-2%200%202%200%202%201%201v-7l2%204%201%204v-4l-1-4c-1%200-1-1%201-2%202-2%202-2%203%203v8l1%203c0%202%200%203%201%202%202%200%201-13-1-15v-2c2-1-3-14-8-24-7-13-19-28-29-36-6-4-9-5-5-2l1%202h-2c1%201-2%203-4%202v-1l-1-1h-2l-1-1c1-1%201-1%200%200-2%200-2%200-1-1%200-2%201-2%203%200l5%201v-1c-2%200-3-2-1-2%203%200-2-3-12-8-17-8-40-12-44-8m53%201v1h-1v1l-1%201h-1l-1%201-1%201%201%201v1l1%201h1l5%201%208%201%205%202%203%201%201%201%205%202h2c2-2%203-1%202%201-1%201-1%201%201%201h2c0%201-1%202-2%201v4l-1-1h-2c-1%200-1%201%201%202s2%202%201%202v4h2c2-3%203-3%201-3-2%201-2%200-1-2%202-1%204%201%203%203l1%201%201%201v1c2%200%202-1%200-4l-2-4c-2%200-2%200-1-1%202-1%200-8-2-8h-1l1-1v-2c-2-3-14-7-20-7-9-1-10-1-6-2l4-1-5-1h-4m-28%202l4%202%205%201-4%203c-3%202-3%202-1%203%201%202%201%202-1%202-2%201-2%200-2-1l-2%201c-3%201-3%201%203%203%204%202%209%201%207-1l1-1h2l-1-1c-1-1-1-1%201-1v-1c-1-1-1-1%201-3%203-2%201-3-3%200-1%201-2%202-1%203v1c-3%200-3-2-1-5l3-2-3-1-8-2m17%2015l-6%204%206%203%205%204%203-2c4-3%204-3-1-6s-5-3-2-5l1-1-6%203m-65%205c-4%200-5%201-3%201l3%201v1l2-1%203-1c3%200%203%200%201%201-3%200-5%202-3%202l-1%201c-3%201-3%201%200%200%205%200%205%202%200%202l-12%203%2010-1c3-1%203%200%200%202l-9%201c-8%200-8%200-1-5%202-1%202-2%201-2h-3l-3%201-1%202c2%201-2%203-7%204l-7%201h8c15%200%2036%203%2037%207l-6-1-15-4h-27v1l-7%202%206-1c9-2%2025-2%2035%201%2025%207%2047%2025%2062%2051l3%204v2h2v-1c0-3%200-3%202%202%202%202%203%206%204%209l2%206v-1c0-2%200-3%202-4%203-1%203-1%203%201%201%201%201%200%201-1%200-3%200-3-2-2-2%200-2%200-1-1%202-3%203-2%204%201%201%202%201%202%201%200%200-3%200-3%201-1%201%203%202%202%201-1%200-2-1-3-2-2l2-3c3-3%204-6%203-7l-1-2h2c0-3-1-6-2-5v-1c0-2%200-2-1-1s-1%201-1-1c1-1%201-2-1-2-1%200-2%201-1%202l-1%202-1-2-2-3c-4-3-7-1-5%203%201%202%201%206-1%206-1%200-2-4-1-6%200-2%200-2-2-1l-2%205c0%202%200%202%201%201s1-1%201%201c1%202%202%202%203%201%202%200%202%200%200%202-3%204-3%204-3%201v-1l-3-3-3-5%207-5%207-5%202%203c1%202%204%203%204%200l-2-1v-2h-2c1-3-2-8-4-8s-2%202%200%204c1%202%201%204-1%204v-1l-2-5c-3-3-3-3-6-1l-3%201%202%203c3%204%204%205%206%204l-2%203-6%204%201-1v-2l-2%201-2-2c-6-6-6-5%202-10%206-5%206-5%208-4%201%202%202%202%202%201h2c4%202-1-4-10-13-10-11-13-13-13-9l1%201%204%202%202%203-7%204c-8%207-8%207-12%203l-2-3c1-1%201-1-1-1h-3l1-1h1l1-1v-2h1l1%202%202%202%201%203c-1%201-1%201%201%201%200-1%201-1%200%200l1%201%202-1-1-1v-1h2l6-3%203-2-4-4c-3-2-4-4-3-4%203%201%203%200%200-3-13-9-36-16-50-15m23%2012l-7%205%205%203c5%202%205%202%207%200l2-1-3-2c-2-1-4-2-5-1-2%200-2%200%200-2%202-1%204-2%205-1l1-1c-1-1%203-4%204-2%201%201%201%201-1%201l1%202c2%200%203%201%203%202l-3-1h-2l2%202h3l2-1v-2h2c2%201%202%201-5%206-7%204-7%204-5%206h2c-1-1%2010-10%2013-10l-13-7-8%204m86%200l1%201v2c-2%201-2%201-1%203h5l1-1v2c-1%201%200%204%202%204s3%205%203%207l2%201%201%201-1%201v6l1%204%203-2c3-1%204-2%202-3l-2-3c0-2%200-2%201-1l1%202v-2l-2-6-1-3-1%202c-1%200-1-1%201-4l2-3-3-2c-3-3-4-4-5-2l-2%201v-1c2-3%200-5-4-4l-2-1-1-1-1%202M178%2078l-3%201%203%201%205%204c3%203%203%203%201%203l-2-1-11-7a49%2049%200%2000-17%203c-7%200-7%200-3%203%203%203%205%204%204%201%200-2%207%203%209%206l3%202%201%201c-1%201%201%207%203%209%202%201%203%204%201%203l-1%202%201%204c0%202%201%202%203%200h2l6%201-2-1c-2%200-3-2-3-4%200-1%201-2%202-1l2%201c-1%202%202%205%204%205h3c1%201%201%201-1%201h-3l2%201%203%201h1v2l6%202c4%202%205%202%205%201-1-1%200-2%201-2l1%201%201%203c1%203%201%203%204%201%204-1%205-3%202-3v-1l1-1%203-1h4c2%201%206%200%206-2-1-1%202-1%205-1l1-1-1-1a362%20362%200%2001-4-2h-4l1%202c3%203%200%202-3-2-4-3-7-4-7-1l-3%202c-4%200-4%201-1%204l1%203h-4c-2%200-2%200-1-1%202-1%202-2%201-3-2-3-1-4%201-4s3-1%203-2c1-2%201-2-1-1-4%201-5%201-7-2-1-3-1-3-5-3l-7%201-2%202-1%201-2-2c0-2%201-3%204-3%205%200%206%200%204-4l-2-4%203%203c1%203%205%205%206%203s2-1%203%203%207%205%206%201l-1-2%202%202c2%203%204%203%207%200l2-2v2c0%203%200%203%204%202l5-1h3c3%200%203%200%202-2-1-3-2-3-5-2l-3-1c1-1%200-1-1-1l-3%201h-3l-3%201c-2%203-3%202-5-1-1-2-2-2-5-2-4%201-4-1-1-3%203-1%206%200%206%202%201%202%203%202%2013-1%202%200%202%200%200-3s-10-7-12-7c-3%202-9%202-9%201l4-1c2%200%202%200%200-3-1-2-2-2-6-2h-6l1-1%202-1c1-1%200-1-2-1l-5-1h-12m217%206c-1%203-1%203%201%203s2%200%201%201c-2%200-3%202-1%202%201%200%200%204-2%206-3%202-4%201-3-2%200-2%200-2-1%200-1%203-1%205%201%205l1%201%201%201h1v-1h3c1-1%201-1%201%202l1%203V85c0-2%200-2-1-1h-3m-275%207l-6%202-11%201h-9l-1%201-2%201h-8c-6%201-10%203-8%205l1%202v2l1%201%201-1%204-1c4%200%203-2%200-3-2-1-2-1%201-1l3-1c0-1%207-2%2010-1s4%201%200-1l-1-2%208%204c1%201%203%202%207%201%206%200%2011%201%208%203l-5-1c-6-1-9%200-5%204%202%202%2015%202%2019%200h6c-1%201%202%202%208%201h26l1%201c3-3%200-3-16-3-16%201-20%200-19-2l-3-2c-2%200-4-2-4-3h-1c-1%202-2%202-5%202h-3l3-1c5-1%207-3%204-5-1-1-1-1%201-1s4%201%204%203%201%202%203%200l3-2-4-1-3-1c0-1-2-2-8-1m34%207a228%20228%200%2001-21%202l2%201%201%202h26c5-1%205-1%205-4-1-2-1-2-13-1m233%205c-2%202-2%202-4%201-1-1-1-1-1%201l1%202c1-1%201%200%201%201l1%203v1l2%201c1-1%202%200%202%201l3%201v3l-6-2-6-3c-1%201-1%201%201%202%204%201%204%203%200%207l-4%202-3-1-3-1c-3-3-6-3-9-1l-2%201v-4l1-1c0-2%200-2-2%200-1%201-2%202-1%203l-1%201-1-1c0-2-3-1-3%200-1%201%200%203%202%203l2%204%203%201c3%200%204%203%200%206-2%202-2%202-1%203l1%201%201%201%201-2c-1-1%200-1%201-1%202%200%203%201%203%203l-1%202v1h-3l-3-2c1-1%200-1-1-1s-2%200-1%201l-1%201-3-1v-1l1-1h1c1-1%200-1-1-1v-1c1-1%201-1-1-1s-3-1-3-2h-1c0%202-2%201-1-1%200-3-2-4-4-1-1%201-1%201-1-2l-1-3-2-1-2-2v5l2%201%201%201v4l-1%202-2%201-2%201h3c2%200%203%200%204%203l3%204%202%201-1%201h-2l2%201%203%203c0%202%201%203%203%201h1v2c-3%200-2%202%200%206%202%203%202%205%201%2011v10c0%202%200%203-2%203-5%200-1%206%207%209%207%203%2010%203%2012%200%201-2%201-2%201%200-1%202%200%203%204%204%205%202%208%201%207-2-1-1%200-2%201-2l2-4%202-3v3c-1%202%200%203%201%203h1c-1-1%202-2%203-2l-3%204-2%203%201%202c-1%201%200%202%201%202h2l-1-1%201-1c1-1%202-1%201-2l-1-1%201-1h1v-3l2-1v-3h-4c-2%202-2%200%201-2l2-1h3v-72c-1%201-5-3-5-6%201-2%200-2-2-2-3%200-4-1-3-3%202-3%200-2-2%201m-320%209c0%201-2%203-4%203l-3%201v-1l-1%201v1l1%201v1l3%201c1%201%202%202%204%201l4-1-2%203-2%202c-1-1-3%201-6%202l-4%203%202%202c3%202%205%201%207-3l2-3c2%200%2010-7%2010-8l-1-1-1-1c1-3-7-6-9-4m171%204a898%20898%200%2001-27%2013c-6%203-14%2010-13%2011h1l1%201c0%201%201%203%203%203%202%201%203%201%205-2l3-3-2-2c-3-1-3-1-6%201-3%203-3%202%200-2%203-3%204-4%207-1%203%201%203%201%2010-4l24-12c3-1%203-1%201-3l-3-1-4%201m36%206c-5%204-8%209-6%209l2%203%201%204%205-5%207-5-2-8-1-3-6%205m-199%202l-6%206-1%202c2%202%201%203-2%204-1%201-2%201-1%202l-1%201-4-2v2l3%203%2011-8c1-2%203-4%205-4%202-1%202-1%201-2-2-2-1-3%201-2%204%203%205-1%201-4l-3-3-4%205m169-1l-2%201-13%208-2%202%202%201%203-1c0-1%203%200%205%202l7%202%207%201%202%202%201%202%202%204c3%202%2012%2015%2012%2016%200%202%202%201%202-1%201-9%200-12-8-21-5-6-7-9-2-5%203%203%203%202-1-3-2-3-4-4-4-3h-2c-1-1%200-2%201-2l-2-3c-4-3-6-4-8-2M34%20136c-3%204-7%207-7%206v1h-1l-1%201%201%203%203-2%202-1c-1%201%200%202%202%203l2%201%204-6%206-6%201-2v-2h-3c-2%200-2%200-1-1v-2c-1%200-5%203-8%207m284-5v2h3l-1%201v2c1%202%200%204-1%205v4l-1%201c-1%201-1%200-1-1l-2%201c-2%201-3%202-5%201l-1%201v4l3-2%202-1c0%202%203%201%206-2s5-4%203-1l-2%204c0%202%200%202-1%201h-2c-1%202-1%202-3%201-1-1-5%201-4%203v1l-1%203c1%203%201%203-1%202l4%2011%206%209c0-2%202-3%202-1%200%201%201%202%202%201v5l-2%202%2012-11-2%201-4%202c-2%200-1-2%204-6%207-7%208-8%206-10-3-1-3-5-1-6h3c2-1%208-4%208-6%201-1-2-3-3-1-2%202-5-2-3-4s-1-3-4-1c-3%201-5%200-3-2s1-4-1-3c-4%201-5%201-6-1l-1-1c0%203%201%205%204%205%202%200%202%200%201%202-1%201-1%202%202%204s3%202%201%204l-1%203-4-5-3-6v-1l-1-4-3-7c0-6-1-6-4-3m-87%2012c-2%201-2%202-1%202%202%200%201%201-1%203-2%201-2%201-2-1v-2l-1%201-3%201-6%202-2%203%204%201h4l3-4-3%206c-4%207-4%206%202%209l5%204c1%202%204%202%204%200l1-1c0%201%203-1%205-5%203-4%204-5%204-3v2l1%201h1l3%205c7%208%207%209-1%2017-5%205%200%203%205-2%207-8%208-7%201%202-4%203-6%206-6%207%201%200%2013-13%2017-19%205-7%203-9-2-3-2%203-5%205-5%204-9-10-9-12-7-14s3-4%201-4l-3-1c-2%200-3%201-1%203l1%202h-2c-3-3-3-3%202-9%202-4%203-5%202-6h-2l-1-1h-4v2l-5-1c-7-3-6-3-8-1M30%20153c-3%201-5%204-4%205%200%202-4%203-4%202v1l-3%205-3%206h1c1-3%206-9%207-9v2c-3%202-2%204%200%204l3%201%206-3c1-1%200-2-2-4-2-1-2-2-1-3s1-1%203%201l2%202%203-4c2-4%202-5%200-6s-2-1-3%201h-2l1-2c2-1-1-1-4%201m12%203l2%202%202%202-5-2-4%205c-3%207-9%2015-12%2019v-1l2-4c3-3-2-7-7-4-4%202-6%204-6%206l-1%202c-2%201-3%203%200%202l-1%204c-2%204-3%208-1%205h2c1%202%204%201%208-5l4-3v2c-1%201%201%204%204%204%201%200%206-5%206-7l2-2v-3h2v-3c0-2%200-2%201-1%202%200%202%200%201-3l1-2h2l-1-1v-1l2-2%201-2%202-2c0-3-5-7-6-5m304%202l-4%201v1l1%206c1%203%201%204%202%203v-2c-1-2-1-3%201-3l1%201v2c1%201%201%202-1%203v8l-1-3v-3l-1%202c-1%203-1%204%201%205l1%202-2-1c-1-2-1-2-4%204-3%207-11%2016-12%2014h-1l-2%203-3%201-1-1-2%203-1%202-3-1c-1-2-1-3%201-3v-1c-1%200-1-1%201-2l3-1h-3l-4%202c0%202-1%202-3%201l-2%201v1h2l3%201%201%202-1%201-3%202h3c2%200%202%200%200%201s-3%203-1%202c1-1%202%200%203%201%202%202%203%201%204-2%201-2%202-3%203-2%204%201%205%201%205-2l2-4h3c-2%202%203%203%204%201l1-3v-3c0-2%200-2-1-1l-1%205c1-1%201-1%200%200%200%203-2%202-2%200%200-3%203-10%204-8s6%200%205-2l-2-2v-1h3v-1l2-1c2-1%204%200%205%203l1%201-2-6-2-5%202-2c2-2%202-2%201-4-3-3-2-6%201-3%202%201%202%201%202-1s-1-3-3-4-3-5%200-4l2-1-3-4-3%201m-26%203l-2%203%201-1%201-1v2c-1%201-1%201%201%201%203-1%203%200%200%202-3%201-4%201-4-2l-3-1c-2%200-2%200%201%207%202%205%203%206%203%204%201-1%201-1%202%201l1%202%204-3%203-4%202-4c3-2%204-5%202-3l-1-1h-2c-3%203-4%202-1%200%202-3%202-4-1-2-1%201-2%202-3%201s-1-1%201-2v-2l-5%203m-119%204l-5%206-5%207c-3%203-3%203-1%203%202%201%202%201%201%203v1l2-2%202-2-1%202-2%204c-2%202-2%202%202%204%203%203%203%203%205%201%205-4%201%201-4%207-6%206-7%208-4%207h1l2%201c2%200%203%201%203%202%201%201%201%202%202%201l2%201%202%201c2%200%200-2-3-3-1-1-2-1-1-2l1-1c0%201%202%200%203-2s3-3%203-2l2-1h-1c-2%200-1-2%201-3h1l3-2c3-4%203-4%2010%204l7%207-6-8c-5-6-7-9-6-10%201%200%201-1-1-1v-3c1-1%203-2%204-1%201%200%208-6%208-8s-4-6-6-6l-1-1c0-1-1-2-3-2-3-1-7%202-7%205%201%202-2%206-4%206l-4%203-2%201%202-2%201-3c0-1-5-3-6-1l-1%201v-3c1-3%201-3%202-2%203%203%207%203%209%200l2-2-5-1-3-1%202-2%201-2%203-1c1-2-4-1-7%202m152%2028l2%201%204%203%202%201h2l5%202%205%202%203%202%203%201h-3c-3-1-3-1-2%201l4%203c3%201%203%201%202%202v1c2%200%204%200%2013%205%206%203%207%203%207%206l-1%203-1%202%201%202%201%2011%201%2012a336%20336%200%2000-1-44c0%205-1%207-2%208l-1-1-1-2h-4v-1l-5-4c-4-1-6-2-7-4-1-3-7-6-10-6l-5-2-12-4m-55%201l-1%202-1%202-1%202-1%203c-2%201-1%202%203%203%205%203%203%204-4%201l-2%201-1%201c-2%201-2%201-1%202v3c0%202%201%203%204%200%202-1%205-1%204%201-1%203%202%203%204%201s4-3%205%200l3%201c2-1%201-4%200-4-2%200-3-2-1-2%202-2%201-3-2-2-2%200-3%200-5-2l-3-2v-4c3-5%203-8%202-8l-2%201m-133%2015c-3%204-4%205-1%205l1-1c-1%200%200-2%202-3%203-2%204-2%201%202l-2%202%202%201%202%202c-1%202%201%204%203%204s4%202%203%204c0%202%207-6%208-8%200-2%200-2%201-1h1v-1l-1-2h-3l-2-1c1-1%200-2-1-3l3%201h5l-2-2%201-1%202-2-4%201h-14c-1-2-2-1-5%203m-3%207l-3%205c-3%203-3%203-1%204%203%200%203%200-1%205-3%204-5%2010-4%2011%202%200%203-1%203-3l1-1%201-2h1l1-2h-2l-2%201%202-3c4-2%208-10%207-12-1-3-3-5-3-3m5%208l-1%201-2%203-2%204-3%206-2%202-2%203v3c2%202%204%201%207-3%204-6%205-6%203-1-1%202-2%204-1%205l-1%201c-2%200-4%203-4%206%200%202%200%202%202%200l8-13-1-3c-1%200-2-1-1-2l4-5c1%201%202%200%204-3%201-2%201-2-2-4-4-2-6-3-6%200M1%20362c1%200%201%201%200%200l-1%201%201%201v1l-1%201%202%201h1l-1%201c-3%200-3%2021%200%2023v4c-2%200-3%202-1%203%202%202%2020%202%2021%201h1l2%201v-3c1%200%201-1-1-2-2-2-2-2%206-5l7-2%204%204%204%202%201-2v2h1l2-2-1-2h-2c-3%201-7-2-5-3v-1h1l4-1v-1l-1-1%204%201c2%202%202%202%200%204-1%202-1%202%201%202%201%200%202%200%201-2l7%205c8%206%208%207%2014%207%205%200%206%200%206-2h1c0%202%201%202%204%202l4-1v-7c1-6%200-8-2-5%200%203-2%201-1-1%200-3-2-2-4%201l-1%201c0-5%201-7%205-8l4-2h-4l-4%201-1%202-1%202-2%202c-1%202-1%202-1-1l1-3%201-2v-3l1%201%208-3%205-3h4l3%201%201%201-4%202-1%201c1%200%201%201-1%203l-4%202h-1l-2%201-2%201%207-1c4-2%206-2%208-1%201%201%201%201-1%202l-5%201v1c1%201%2016-4%2020-7h-2l-7%201c-4%201-4%201-2-1%201-1%201-1-1-1l-4%202-2-1%207-3%206-3h1l3-2h2l-1%202h1c2%200%203%200%202%201%200%201%201%201%206-1l1%201h1c4-2%205%201%204%206l-3%204v4c0%203%200%204-1%203l-1-1v2c1%202%201%206-1%205h-2v1l1%202%2012%201c12%200%2013-1%2011-2l-2-2h3c2-1%202-1%201-2s-4%200-7%201c-6%202-9%203-8%201l-1-1-2-2c0-1%201-2%202-1%202%200%202%200%201-1s-2-2-1-5h3l-1-1-1-2%202%201%202%202v-2c-2-2%200-4%204-2%203%202%203%202%203%200%201-1%201-2%203-1%203%201%204%202%203%204-2%203%200%204%201%201%201-2%202-2%204%200%203%201%203%201%202%202v1c2-1%203%203%201%206%200%203-5%204-6%203l-2-1c-2%201%200%203%202%203l11-4c13-6%2013-6%2012-1v5h8c7%200%2010%200%2013-2%207-3%2010-3%2010-2l-2%203c-1%201-1%201%201%201l5-1c1-2%202-2%204%200l11%201h8l-7-4c-8-4-8-5-7-3l-1%201-1-1v-2c-5-3%203%200%2011%204l11%205c1%200-1-2-11-7-3-1-4-3-2-3l10%205%2012%205c2%200%202%200%200-1-3-1-3-2-2-6v-3l-1%201-7-3-6-4c2-1%200-2-2-1l-2%202-2%201-4%202c-2%202-2%202-3%201v-3c1-2%200-2-3-1v4h-3c-1-1-5%201-5%203l-1%201-5%201c-7%203-8%203-7%201v-3l-1%203-2%202%201-4v-3l-1-2c1-2-1-3-2%200l-2%201h-3c-1%202-2%201-1-2l-1-3v-1c1-1%201-1-1-1-2%201-2%200-2-1%200-2%200-2-2-2-3%201-23-10-21-11l-1-1v-3h-4c-1%200-1-1%201-2l3-2h-24l-29%201c-3%200-5%201-9%204-5%204-14%209-15%208l1-6%201-6-10-1c-1%209-3%2021-5%2022h3c2-1%203-1%203%201v14c0%202%200%202-3%200l-3-4h-1v-1h-1v-1h-1l-1-1-2-2c-3-2-3-2%202-4l4-1-4%201c-7%201-10%201-9-1h-1l-1-1v-1h-1l-1%201v-2c0-2-9%201-10%202-1%202-6%203-7%202s3-4%204-3l1-2v-2l1%202%201%201v-7l-2%201-2%201-1%202c1%201%200%202-1%203-3%202-3%202-4-1%200-2%200-3-1-2h-1l2-3v-4l2-1h1l2-1h2l1-1v2h2c2-1%202-2%200-2-1-1-1-1%201-1h2l1-1c0-2%203-3%207-3l4-1c2-1-11-1-16%201l-4-1-2%201-4%202-3%202h-2c-1-2-1-3%202-4s2-1-12-1c-8-1-10%200-10%201m167-1l9%205%2010%207c2%202%203%202%203%201h3c1%201%202%200%204-1%207-5%2014-7%2013-4-1%202%200%202%202%201v-1l-1-1c2-2-1-3-4-2h-5l-1%201-1-1v-3h-2l-2%201-7-2-3-1h-7l-1-1-1%202c0%202-1%202-5%200-3-2-4-2-4-1m78%201v2c1%200-3%2016-5%2017l-4-1-4-2a215%20215%200%200028%2016c1%201%202%201%206-1l4-1%201-1h1l1-1h1l1-1h1v-1l1-1c1%201%202%200%202-2%200-3%201-5%202-4l-1%203v3l1-1h1l1-1%201-1%201%201%202%201%202%202%201%201v1h-1v4l-2-1-2-2v1l-1%201v1l-2%201c-1-1-2%200-3%201-1%202-2%202-5%201h-2l2%201c3%202%205%202%205%201h2c2%201%204%200%2010-3%209-5%2011-5%2010-1l-3%203c-6%200-3%202%203%202l7-1v-1l-2-2h-1c0%202-3%200-2-2%200-1%201-2%202-1%203%201%200-2-4-3l-3-3h3l9%206%207%205h-2l7%202c5%200%205%200%206-4l1-5-3-1c-3-3-12-5-11-3h-2l-3-3-5-3c-5-3-6-4-3-5v-5l1-2c-1-3-7-7-11-7l-2-1-3-1h-2l2%202%202%202h-1c-2-1-2-1-2%201s0%203-4%202c-4%200-4%200-3%202%201%201%202%202%204%201%202%200%203%200%202%202l1%201v2h-2l-1%201c-1%203-3%204-3%201l-2%202c-2%204-2%204-3%200l1-2%202-2%202-4-5-2-5-1v-1l-1-1h-1l-1-1c-3%201-6%200-3-1h-1c-3%200-3%200-2-1v-1l-4-1h-3c-2%200%200%202%206%205%207%203%208%204%207%206l-2%202-3-3h-1c-1%201-1%201-1-1l-2-1c-6%200-7-1-7-2h-2l-1%201c1%201%200%201-1%201v-1l1-4c0-3-3-5-3-2m75-1v8c1-1%201-1%205%201%203%202%203%202%201%202h-2l2%201c1%201%204%202%205%201%202%200%203%200%202%201l2%202c4%202%202%202-4%200l-6-1c0%202-1%202-4%200-8-3-5%200%203%204l9%204%202%201v3l2%201-1%201c-1-1-2%200-2%204l-1%204%202-4c1-2%201-3%202-2%200%201%201%202%203%202l2%202c0%204%203%204%2030%204h27v-40h-40c-34%200-40%200-39%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAFC0lEQVQ4yzWU6U+UVxTG39jWNE36oa1WTdpqQWQdYIBh6zCswyYgDMsMMKyyDQwwOwz7IiK4FZVat9gPtqU1NDZtjN0/mBbrgtRqEavVfmnSv+LX876mH57ce9/33uee5znnXMVgNJKQliZIx2DMwFxcTJ4gNiWVmCQD0YlJlFjKsdnr0BmSKSgpkXk9bV0dHJyZIjDgo7yqkvy9csZgQIlNTkYlVcnihEQ9VFhWRklFBenZOVisNfT0OelwdNLn7iU4FNDm6nd7cyNFsjevqIjE9Pc0DiVSrycqIZFIfQIquRqRSpwkP9NzcjHvLaGipoa6xgaqam20tLfi83vocnZTXVtLblExyRkmsvILyDTno0QlJBAWG0tIdDShMToZY9gVGU2YLg692FBWWUl9UyPOficubz+llRZNbr+rl15BYWmpRmaUy8Pj9CgR8fGEC1SyPXHxpGZmCYlF5DQJSR/zh+eYPzJHIDhAZ4+D4ZFBjbTP1Ycv4CVfPH03Klojyy8tUyUnaJJ1Ymh9U5N4Z6G1ox3/oJ9KkWi12xkdH+HAwWmR205DSzMOp4NSiwWPz4sxN5eMPDO2hkaxwYmiepZiMolP1fR73BTtKyc+NV0izSYiPoEIfSJ54qNdiNQIh0aCtHV2aH6VV1fLhQ10dDtx9PYTHBlB0SWnaJFV2mxCnCnRJomEGPFVT0hMrIzxkiCTZv7w6LBk2iVENZrEOjnn8ftxulzMzM5y5uxpFHNJKZNTEyKlRSPSS3Q6Q4p4GstOSc5bYRGkZmVLQjyaZDWixHQjOyOiqK6rp93hwC3Sr139km+uXkGpsFqpstVikNRHiXxVokq8W7Icn2ZEl2LUPJ2YHCensFhqdJ9mR1xyKmVV1VL0lZqvy5cvMS2FrqilsVsXq5EZRFp4vJ7MgmJKqmyU1dSLbz1Sf7VaPZry8nG4vASGRyQJdomwTjLt48TCvNSkjeLyCpT8fRUYZaPaISqZISMLS10jVfVNtHY6cPQ4iRRf1UT5gkN8+tkSv/78I3dWvuOXn77inyd3+ffZPfaLCrXklHJrLVkFhXK7WWudzPxCWrq6aWjrlAjs0lbF0jlp9Lg8nDl/gaWlT7hx/Xs27q3w5MFNnj28zYenT5AtdqheKzVN7ZRZ7aTlFKA3ZhGTkkG3Z4DxmXkq6pqJSzNhbW5n7MAhnL4gFfUt7O9xMf/+InPHTzI0OUuRpVb2ZaFLlV6+7AnjC38kF9u3c651K6cbX+NKIJwfphK5OhzDtdFYvg5G8e1YHMueUM61bOGjju0s9e3i4553uCjzcy1vcL51i4yvo9wfVHhyJJSnR0N4eiyUvxcieXxkN4/mQ/jrpJ6Nma387la4J3gQUNgIKjwU/DGgsK5i8Pn6fyh3Ay+wsaDn0alU1o/GsH4sjj9PpfD4VDIPj0axccLAxnEd64cjWBvYxF2/wqpP0UYVvwnpWuA51LVyw7eZO2Nvsjqxg9XxbaxNv83N0W2sDG3ldvBV7s+GcGtyJ2uTO7jhfZFb/pdYG3qF1cGXuRXYzPV+hRXPJvn3ggbFbDZhry3nwuIsB8bcjA504+trpawklzpbOZfOzjE77mLh0BCHZ4J4+ztwdDTid3dyfnGOliYr0bo9GI0GTKZUlPTsXHrdHhY/OClN3sXE9BTLy5/jdHtxBwLsl9YaHB7Snq9AMKC9PK3yOLR1dUkfe/EP+OXZk0c60aC17H/g30QdwNvajQAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/502b1/local_agent_cover2.png","srcSet":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/f2e6d/local_agent_cover2.png 114w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/4ddba/local_agent_cover2.png 229w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/502b1/local_agent_cover2.png 457w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/7ddc2/local_agent_cover2.png 686w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/435bf/local_agent_cover2.png 914w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/6050d/local_agent_cover2.png 1200w","srcWebp":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/15384/local_agent_cover2.webp","srcSetWebp":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/31fce/local_agent_cover2.webp 114w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/e3e25/local_agent_cover2.webp 229w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/15384/local_agent_cover2.webp 457w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/0258d/local_agent_cover2.webp 686w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/64ea2/local_agent_cover2.webp 914w,\n/static/1568d8300bdfcc8c3eec5baa8dfea5f9/9000d/local_agent_cover2.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%206l1%205%203%201-2%201-2-1v121a1740%201740%200%20004%20128l3%201%202%201c2-1%202%200%202%202%200%203%200%203-4%203l-5-1h3l4-1c1-1%200-1-4-1H0v8l1%208v2c-2%201-1%202%203%202%204%201%204%201%202-1l-3-5v-4h3c4%201%207%202%204%202l-1%201h9l-3-1c-2%200-2%200-1-1v-2c-1-1-2-2-3-1v-1l-1-2%203-1%209%201%205%202c3%200%203%200%203%205s-1%206-3%204l-9-1-1%201c-2%201-3%205-1%205l1-2c0-1%201-2%203-2h6l-4%201c-3%200-4%200-4%202l4%201h4l-4-1c-3-1-2-1%203-1l11-1c4-1%204-1%205%201%200%203%2036%203%2036%201l1-2%201%202%2013%201c12%200%2012%200%2011-2s0-3%203-2c3%200%203%200%203-3%200-4-1-4-3-2h-1v-2l-1-2-1-3c-1-2-1-2%204-2l6%201c1%202%204%201%203-1l-2-2-1-1c0-1-1-1-1%201h-1l-1-5-1%201-1%201h-1l1%201v2l-4%201c-2%200-2%200-1-4%200-3%200-4-2-5l-2-1%202-1%203-1h-3c-4%200-5-2-1-2l4%201%202%201h2l3%202%202%202v1c1%200%203-2%201-3v-1l-2-1c-2%200-3%200-2-1l-2-1v-2c1-1%201-1%203%201l2%202c4%200%207%203%206%205l1%203%203%201%205%202c1%200%202%200%201-1l-2-1-1-1c-1%201-2%200-2-1l-1-1c-1%200-2-1-2-3%200-4%201-4%204%200l4%202c2%200%203-4%202-5-2%200-1-2%201-2%202-1%205%201%205%202-1%201%201%202%202%201%202%200%202%200%201-1s0-1%202-1c3%200%206%204%205%208v3c2%203%200%204-2%202l-2-2v2c-1%202-2%202-6%202l-3%201%202%201c4-1%206%201%206%206v2h2c1%201%201%201%201-1l2-4c1-1%201-1-1-2-4-2-4-3%200-3%203%200%207%205%204%205l2%201%205%203c4%204%205%204%2012%203l8-3%203-1h4c3%200%204%201%204%203h-1c-2-3-3-2-2%200%200%202%200%203%204%203l4%201%202%201%201%201%201%201%201-4%201-6c2-1%202-1-2-2l-9-5%203%201h4c1%200%201-1-1-1l-1-2h1l3-1c1-1%201-1-1-1s-3%200-2-1c2%200%200-2-3-2l-2-2%201-1%203-1c0-2%202-3%204-3l1-1%202-1%206-1%204%201c1-1%200-1-2-1l-3-2c0-2%206-9%209-11l5-4%202-1c2%200%2013-11%2014-14l2-2h1l-1-1v-1l1-1c0-1%201-4%203-4l1-2%203-2v3l3-2%205-2c5-1%2011-5%209-6-2%200-2%200%200-2h4c3%200%203%202%200%202-2%200-2%200-2%202l1%202%201-1c1-1%205-2%206%200l-3%201c-3%201-3%201-1%202l2%201c0%202%200%202%201%201s2-1%204%202l4%204%204%203%204%202%204%202c2%202%202%202%204%201h4c1%203%204%203%206%201%203-2%203-2%205%200%203%201%205%201%205-3%200-2%203-2%204%200%202%202%205%201%205-2%200-2%201-2%205-2%203%200%204-1%204-3s1-2%203-2l4-2c1-5%2017%200%2019%206l5%205c6%203%208%208%204%2013l-2%205c1%201%200%201-1%201h-1c2%202%201%204-2%207l-3%205-1%203v-4l1-4%203-9c3-5%204-10%202-10l-4%204-1%204-4%209-3%207-1%204-2%204-1%203-2%204-2%205c-1%202-1%203-3%202v1c1%201%200%201-3%202l-5%202c-2%200-2-1-1-3v-3l-2%202-2%204-1%201v-3c1-3%200-4-1-4v2c0%203-1%204-5%204l-4%201c-1%201%200%201%203%201l5-1-4%201c-4%202-10%203-6%201%202-1-1-1-8%201l-3-1v-1l-1%202-4%202c-1%200-2%200-1-1l-1-1-3-1c-1-2-3-2-3-1l2%201v2l-4%201%201-1c1-1%201-1-2-1s-3%200-3-4c0-2%200-3-3-4l-4-3c-1-2-4-3-2-1%201%202-14-1-17-3-1-2-3-1-3%201s-2%203-2%200v-1l1-1-2-4-1%201c1%201%200%202-2%203l-2%201c1%202-6%203-7%202l2-1c1-1%201-1-1-1s-3%201-3%202l-2%202v4c0%203%200%203-3%202h-2l2%202%201%201-3-1c-2-1-2-1-3%201-1%203%200%204%201%202h2l1%201h-1l-1%201h-6v-1l5-9c1-1%200-2-1-2v1l-1%202-1-1v-2c2-1-2-2-4-1v-1h-1c-2%200-2%200-1-1v-1l-11-2-9-2h-2l2%202%203%201-3%201c-2%200-2%200-1%201%202%201%205%200%205-1l2-1%202%201%201%201%205%202c3%201%204%205%201%2010v5c1%200%202-1%202-3l1-3c1-1%204%201%204%204%201%201%202%202%2024%202l24-1%202-1%202%201%202%201%201-2c0-2%200-2-3-1l-3-1%201-1%201-2v-2l-1-1c0-1%207-2%209-1%201%200%201%205-1%209%200%202%2013%202%2047%201h2c-5%201-5%201%203%201l8-1h1c0%202%2027%202%2027%200h1c0%202%2030%202%2030%200l1-143V0h-18l-5%204c-5%204-6%205-6%208s0%203-2%204c-2%200-3-4%200-4l1-2-1-1-2-4-1-5v5c1%206%200%206-1%200-2-6-5-7-11-1-4%204-5%205-5%208l-1%204-1-2c0-3%200-4-2-4-2-1-2-1%200-3l4-4%203-2-3-1c-2%200-4%200-5%202l-3%202%201-2V0c-1%200-4%204-3%205l-1%203c-3%202-4%205-2%204h1c0%202-2%202-3%200-1-1-1-1-1%201%200%201%200%203-2%205l-1%203%203-3c3-3%204-4%204-2%201%201-1%204-2%204l-1%201-2%202h-1l-2%203c-2%202-2%202-3%201l1-4%201-1-9%204-3%201c-1-1-1-1%202-4l5-3%201-1%202-2%201-1v-2c1-1%201-1-1-1l-3-1-1-1v1l-1%203h-3l2%202v3h-4c0%204-3%204-6%201s-5-4-10-5l-6-2-1-1c-1%201-1%200-2-2l-1-1v2l-1%201c-2%200-2-3%200-4s2-2%202-3c-1-1-5%203-5%205l-2%201-4-2c-2%200-3-1-2-2l-1-1-1%201-2%201-7-2c-4-1-5-2-3-4l-2%201h-6c-2-1-5-2-7-1l-2-1A1775%201775%200%200096%201L48%200H0v6m193%203l-5%204-3%204h4l4%202h4c-1%202%200%202%202%202l7%203c4%202%206%202%207%201h5l4%201-1-2%202-2c4-1%203-2-2-4l-5-2-15-4-2-1c1-1-4-3-6-2m-12%2014l-6%204-4%204c-4%202-4%202%201%204%204%202%205%202%204%206%200%204%200%204%201%203l1-3c-1-1%200-2%203-4%204-3%204-2%202%201l-3%204h3l4%202c2%202%202%202%204%201%201-2%201-2-1-3-3%200-4-1-1-2l1-4c0-3%200-3-2-2-3%202-4%201-1-1%203-3%203-4%200-3l-2-1%203-1c4%200%209-4%207-5h-4c-1-2-7-2-10%200m63%200c-3%203-4%204-3%205a59%2059%200%200019%205c1%201%203%200%206-2%205-4%205-4-5-7-12-3-13-3-17-1m66%208l-6%204c-2%202-3%203-5%202h-2l3%202%204%203c0%202%200%202%202%201s2-4%201-3l-1-1%205-2%201-1c-1-2%201-3%202-1h2l3-2c1-1%201-1-1-3-3-3-5-3-8%201m-92%200v2l2-1%205-1h6l-3%202c-2%202-4%202-6%202h-5l3%201h4l-3%202c-5%204-1%202%205-2s6-4%2012-4c4%201%205%201%203%202-1%202-1%202%201%202l4%201c2%200%201%202-4%205l-7%203-2-1%202-3%204-2%202-1h-11l-5%201c-3%202-2%202%206%202%202%200%202%200%201%202h-8l-5-2-2-2c-3-2-4-2-5-1s-1%202%202%202l4%201h-5l-6%201-1-1v-1c-2%200-5-1-4-2%201-2-2-1-5%202l-2%202%203-1c1-2%203-3%203-1l1%201c2%201%202%201%200%201l-7%203-3%201%205-1c8-1%2018-1%2019%201h9l8%201v-1l3%201%201%201c-1%201%203%203%206%203h1a116%20116%200%200131%2025c9%209%2019%2024%2015%2022l1%205c3%206%204%208%203%203%200-2%201-1%202%203l3%203c0-3%202-1%202%202h-1l1%208%202%2018%201%2012c2%203%202%201%201-2s-1-3%201-3l3-1v-3l-1-1-1%202-1%202-1-2%201-3%201-4c-1-4-1-4%205-8l5-5-4%202c-5%204-5%204-6-1l-1-3c-2%201-1-3%201-4l2-1-1%204c0%203%200%203%201%201%200-4%202-5%202-2%200%202%200%202%201%201v-7l2%204%201%204v-4l-1-4c-1%200-1-1%201-2%202-2%202-2%203%203v8l1%203c0%202%200%203%201%202%202%200%201-13-1-15v-2c2-1-3-14-8-24-7-13-19-28-29-36-6-4-9-5-5-2l1%202h-2c1%201-2%203-4%202v-1l-1-1h-2l-1-1c1-1%201-1%200%200-2%200-2%200-1-1%200-2%201-2%203%200l5%201v-1c-2%200-3-2-1-2%203%200-2-3-12-8-17-8-40-12-44-8m53%201v1h-1v1l-1%201h-1l-1%201-1%201%201%201v1l1%201h1l5%201%208%201%205%202%203%201%201%201%205%202h2c2-2%203-1%202%201-1%201-1%201%201%201h2c0%201-1%202-2%201v4l-1-1h-2c-1%200-1%201%201%202s2%202%201%202v4h2c2-3%203-3%201-3-2%201-2%200-1-2%202-1%204%201%203%203l1%201%201%201v1c2%200%202-1%200-4l-2-4c-2%200-2%200-1-1%202-1%200-8-2-8h-1l1-1v-2c-2-3-14-7-20-7-9-1-10-1-6-2l4-1-5-1h-4m-28%202l4%202%205%201-4%203c-3%202-3%202-1%203%201%202%201%202-1%202-2%201-2%200-2-1l-2%201c-3%201-3%201%203%203%204%202%209%201%207-1l1-1h2l-1-1c-1-1-1-1%201-1v-1c-1-1-1-1%201-3%203-2%201-3-3%200-1%201-2%202-1%203v1c-3%200-3-2-1-5l3-2-3-1-8-2m17%2015l-6%204%206%203%205%204%203-2c4-3%204-3-1-6s-5-3-2-5l1-1-6%203m-65%205c-4%200-5%201-3%201l3%201v1l2-1%203-1c3%200%203%200%201%201-3%200-5%202-3%202l-1%201c-3%201-3%201%200%200%205%200%205%202%200%202l-12%203%2010-1c3-1%203%200%200%202l-9%201c-8%200-8%200-1-5%202-1%202-2%201-2h-3l-3%201-1%202c2%201-2%203-7%204l-7%201h8c15%200%2036%203%2037%207l-6-1-15-4h-27v1l-7%202%206-1c9-2%2025-2%2035%201%2025%207%2047%2025%2062%2051l3%204v2h2v-1c0-3%200-3%202%202%202%202%203%206%204%209l2%206v-1c0-2%200-3%202-4%203-1%203-1%203%201%201%201%201%200%201-1%200-3%200-3-2-2-2%200-2%200-1-1%202-3%203-2%204%201%201%202%201%202%201%200%200-3%200-3%201-1%201%203%202%202%201-1%200-2-1-3-2-2l2-3c3-3%204-6%203-7l-1-2h2c0-3-1-6-2-5v-1c0-2%200-2-1-1s-1%201-1-1c1-1%201-2-1-2-1%200-2%201-1%202l-1%202-1-2-2-3c-4-3-7-1-5%203%201%202%201%206-1%206-1%200-2-4-1-6%200-2%200-2-2-1l-2%205c0%202%200%202%201%201s1-1%201%201c1%202%202%202%203%201%202%200%202%200%200%202-3%204-3%204-3%201v-1l-3-3-3-5%207-5%207-5%202%203c1%202%204%203%204%200l-2-1v-2h-2c1-3-2-8-4-8s-2%202%200%204c1%202%201%204-1%204v-1l-2-5c-3-3-3-3-6-1l-3%201%202%203c3%204%204%205%206%204l-2%203-6%204%201-1v-2l-2%201-2-2c-6-6-6-5%202-10%206-5%206-5%208-4%201%202%202%202%202%201h2c4%202-1-4-10-13-10-11-13-13-13-9l1%201%204%202%202%203-7%204c-8%207-8%207-12%203l-2-3c1-1%201-1-1-1h-3l1-1h1l1-1v-2h1l1%202%202%202%201%203c-1%201-1%201%201%201%200-1%201-1%200%200l1%201%202-1-1-1v-1h2l6-3%203-2-4-4c-3-2-4-4-3-4%203%201%203%200%200-3-13-9-36-16-50-15m23%2012l-7%205%205%203c5%202%205%202%207%200l2-1-3-2c-2-1-4-2-5-1-2%200-2%200%200-2%202-1%204-2%205-1l1-1c-1-1%203-4%204-2%201%201%201%201-1%201l1%202c2%200%203%201%203%202l-3-1h-2l2%202h3l2-1v-2h2c2%201%202%201-5%206-7%204-7%204-5%206h2c-1-1%2010-10%2013-10l-13-7-8%204m86%200l1%201v2c-2%201-2%201-1%203h5l1-1v2c-1%201%200%204%202%204s3%205%203%207l2%201%201%201-1%201v6l1%204%203-2c3-1%204-2%202-3l-2-3c0-2%200-2%201-1l1%202v-2l-2-6-1-3-1%202c-1%200-1-1%201-4l2-3-3-2c-3-3-4-4-5-2l-2%201v-1c2-3%200-5-4-4l-2-1-1-1-1%202M178%2078l-3%201%203%201%205%204c3%203%203%203%201%203l-2-1-11-7a49%2049%200%2000-17%203c-7%200-7%200-3%203%203%203%205%204%204%201%200-2%207%203%209%206l3%202%201%201c-1%201%201%207%203%209%202%201%203%204%201%203l-1%202%201%204c0%202%201%202%203%200h2l6%201-2-1c-2%200-3-2-3-4%200-1%201-2%202-1l2%201c-1%202%202%205%204%205h3c1%201%201%201-1%201h-3l2%201%203%201h1v2l6%202c4%202%205%202%205%201-1-1%200-2%201-2l1%201%201%203c1%203%201%203%204%201%204-1%205-3%202-3v-1l1-1%203-1h4c2%201%206%200%206-2-1-1%202-1%205-1l1-1-1-1a362%20362%200%2001-4-2h-4l1%202c3%203%200%202-3-2-4-3-7-4-7-1l-3%202c-4%200-4%201-1%204l1%203h-4c-2%200-2%200-1-1%202-1%202-2%201-3-2-3-1-4%201-4s3-1%203-2c1-2%201-2-1-1-4%201-5%201-7-2-1-3-1-3-5-3l-7%201-2%202-1%201-2-2c0-2%201-3%204-3%205%200%206%200%204-4l-2-4%203%203c1%203%205%205%206%203s2-1%203%203%207%205%206%201l-1-2%202%202c2%203%204%203%207%200l2-2v2c0%203%200%203%204%202l5-1h3c3%200%203%200%202-2-1-3-2-3-5-2l-3-1c1-1%200-1-1-1l-3%201h-3l-3%201c-2%203-3%202-5-1-1-2-2-2-5-2-4%201-4-1-1-3%203-1%206%200%206%202%201%202%203%202%2013-1%202%200%202%200%200-3s-10-7-12-7c-3%202-9%202-9%201l4-1c2%200%202%200%200-3-1-2-2-2-6-2h-6l1-1%202-1c1-1%200-1-2-1l-5-1h-12m217%206c-1%203-1%203%201%203s2%200%201%201c-2%200-3%202-1%202%201%200%200%204-2%206-3%202-4%201-3-2%200-2%200-2-1%200-1%203-1%205%201%205l1%201%201%201h1v-1h3c1-1%201-1%201%202l1%203V85c0-2%200-2-1-1h-3m-275%207l-6%202-11%201h-9l-1%201-2%201h-8c-6%201-10%203-8%205l1%202v2l1%201%201-1%204-1c4%200%203-2%200-3-2-1-2-1%201-1l3-1c0-1%207-2%2010-1s4%201%200-1l-1-2%208%204c1%201%203%202%207%201%206%200%2011%201%208%203l-5-1c-6-1-9%200-5%204%202%202%2015%202%2019%200h6c-1%201%202%202%208%201h26l1%201c3-3%200-3-16-3-16%201-20%200-19-2l-3-2c-2%200-4-2-4-3h-1c-1%202-2%202-5%202h-3l3-1c5-1%207-3%204-5-1-1-1-1%201-1s4%201%204%203%201%202%203%200l3-2-4-1-3-1c0-1-2-2-8-1m34%207a228%20228%200%2001-21%202l2%201%201%202h26c5-1%205-1%205-4-1-2-1-2-13-1m233%205c-2%202-2%202-4%201-1-1-1-1-1%201l1%202c1-1%201%200%201%201l1%203v1l2%201c1-1%202%200%202%201l3%201v3l-6-2-6-3c-1%201-1%201%201%202%204%201%204%203%200%207l-4%202-3-1-3-1c-3-3-6-3-9-1l-2%201v-4l1-1c0-2%200-2-2%200-1%201-2%202-1%203l-1%201-1-1c0-2-3-1-3%200-1%201%200%203%202%203l2%204%203%201c3%200%204%203%200%206-2%202-2%202-1%203l1%201%201%201%201-2c-1-1%200-1%201-1%202%200%203%201%203%203l-1%202v1h-3l-3-2c1-1%200-1-1-1s-2%200-1%201l-1%201-3-1v-1l1-1h1c1-1%200-1-1-1v-1c1-1%201-1-1-1s-3-1-3-2h-1c0%202-2%201-1-1%200-3-2-4-4-1-1%201-1%201-1-2l-1-3-2-1-2-2v5l2%201%201%201v4l-1%202-2%201-2%201h3c2%200%203%200%204%203l3%204%202%201-1%201h-2l2%201%203%203c0%202%201%203%203%201h1v2c-3%200-2%202%200%206%202%203%202%205%201%2011v10c0%202%200%203-2%203-5%200-1%206%207%209%207%203%2010%203%2012%200%201-2%201-2%201%200-1%202%200%203%204%204%205%202%208%201%207-2-1-1%200-2%201-2l2-4%202-3v3c-1%202%200%203%201%203h1c-1-1%202-2%203-2l-3%204-2%203%201%202c-1%201%200%202%201%202h2l-1-1%201-1c1-1%202-1%201-2l-1-1%201-1h1v-3l2-1v-3h-4c-2%202-2%200%201-2l2-1h3v-72c-1%201-5-3-5-6%201-2%200-2-2-2-3%200-4-1-3-3%202-3%200-2-2%201m-320%209c0%201-2%203-4%203l-3%201v-1l-1%201v1l1%201v1l3%201c1%201%202%202%204%201l4-1-2%203-2%202c-1-1-3%201-6%202l-4%203%202%202c3%202%205%201%207-3l2-3c2%200%2010-7%2010-8l-1-1-1-1c1-3-7-6-9-4m171%204a898%20898%200%2001-27%2013c-6%203-14%2010-13%2011h1l1%201c0%201%201%203%203%203%202%201%203%201%205-2l3-3-2-2c-3-1-3-1-6%201-3%203-3%202%200-2%203-3%204-4%207-1%203%201%203%201%2010-4l24-12c3-1%203-1%201-3l-3-1-4%201m36%206c-5%204-8%209-6%209l2%203%201%204%205-5%207-5-2-8-1-3-6%205m-199%202l-6%206-1%202c2%202%201%203-2%204-1%201-2%201-1%202l-1%201-4-2v2l3%203%2011-8c1-2%203-4%205-4%202-1%202-1%201-2-2-2-1-3%201-2%204%203%205-1%201-4l-3-3-4%205m169-1l-2%201-13%208-2%202%202%201%203-1c0-1%203%200%205%202l7%202%207%201%202%202%201%202%202%204c3%202%2012%2015%2012%2016%200%202%202%201%202-1%201-9%200-12-8-21-5-6-7-9-2-5%203%203%203%202-1-3-2-3-4-4-4-3h-2c-1-1%200-2%201-2l-2-3c-4-3-6-4-8-2M34%20136c-3%204-7%207-7%206v1h-1l-1%201%201%203%203-2%202-1c-1%201%200%202%202%203l2%201%204-6%206-6%201-2v-2h-3c-2%200-2%200-1-1v-2c-1%200-5%203-8%207m284-5v2h3l-1%201v2c1%202%200%204-1%205v4l-1%201c-1%201-1%200-1-1l-2%201c-2%201-3%202-5%201l-1%201v4l3-2%202-1c0%202%203%201%206-2s5-4%203-1l-2%204c0%202%200%202-1%201h-2c-1%202-1%202-3%201-1-1-5%201-4%203v1l-1%203c1%203%201%203-1%202l4%2011%206%209c0-2%202-3%202-1%200%201%201%202%202%201v5l-2%202%2012-11-2%201-4%202c-2%200-1-2%204-6%207-7%208-8%206-10-3-1-3-5-1-6h3c2-1%208-4%208-6%201-1-2-3-3-1-2%202-5-2-3-4s-1-3-4-1c-3%201-5%200-3-2s1-4-1-3c-4%201-5%201-6-1l-1-1c0%203%201%205%204%205%202%200%202%200%201%202-1%201-1%202%202%204s3%202%201%204l-1%203-4-5-3-6v-1l-1-4-3-7c0-6-1-6-4-3m-87%2012c-2%201-2%202-1%202%202%200%201%201-1%203-2%201-2%201-2-1v-2l-1%201-3%201-6%202-2%203%204%201h4l3-4-3%206c-4%207-4%206%202%209l5%204c1%202%204%202%204%200l1-1c0%201%203-1%205-5%203-4%204-5%204-3v2l1%201h1l3%205c7%208%207%209-1%2017-5%205%200%203%205-2%207-8%208-7%201%202-4%203-6%206-6%207%201%200%2013-13%2017-19%205-7%203-9-2-3-2%203-5%205-5%204-9-10-9-12-7-14s3-4%201-4l-3-1c-2%200-3%201-1%203l1%202h-2c-3-3-3-3%202-9%202-4%203-5%202-6h-2l-1-1h-4v2l-5-1c-7-3-6-3-8-1M30%20153c-3%201-5%204-4%205%200%202-4%203-4%202v1l-3%205-3%206h1c1-3%206-9%207-9v2c-3%202-2%204%200%204l3%201%206-3c1-1%200-2-2-4-2-1-2-2-1-3s1-1%203%201l2%202%203-4c2-4%202-5%200-6s-2-1-3%201h-2l1-2c2-1-1-1-4%201m12%203l2%202%202%202-5-2-4%205c-3%207-9%2015-12%2019v-1l2-4c3-3-2-7-7-4-4%202-6%204-6%206l-1%202c-2%201-3%203%200%202l-1%204c-2%204-3%208-1%205h2c1%202%204%201%208-5l4-3v2c-1%201%201%204%204%204%201%200%206-5%206-7l2-2v-3h2v-3c0-2%200-2%201-1%202%200%202%200%201-3l1-2h2l-1-1v-1l2-2%201-2%202-2c0-3-5-7-6-5m304%202l-4%201v1l1%206c1%203%201%204%202%203v-2c-1-2-1-3%201-3l1%201v2c1%201%201%202-1%203v8l-1-3v-3l-1%202c-1%203-1%204%201%205l1%202-2-1c-1-2-1-2-4%204-3%207-11%2016-12%2014h-1l-2%203-3%201-1-1-2%203-1%202-3-1c-1-2-1-3%201-3v-1c-1%200-1-1%201-2l3-1h-3l-4%202c0%202-1%202-3%201l-2%201v1h2l3%201%201%202-1%201-3%202h3c2%200%202%200%200%201s-3%203-1%202c1-1%202%200%203%201%202%202%203%201%204-2%201-2%202-3%203-2%204%201%205%201%205-2l2-4h3c-2%202%203%203%204%201l1-3v-3c0-2%200-2-1-1l-1%205c1-1%201-1%200%200%200%203-2%202-2%200%200-3%203-10%204-8s6%200%205-2l-2-2v-1h3v-1l2-1c2-1%204%200%205%203l1%201-2-6-2-5%202-2c2-2%202-2%201-4-3-3-2-6%201-3%202%201%202%201%202-1s-1-3-3-4-3-5%200-4l2-1-3-4-3%201m-26%203l-2%203%201-1%201-1v2c-1%201-1%201%201%201%203-1%203%200%200%202-3%201-4%201-4-2l-3-1c-2%200-2%200%201%207%202%205%203%206%203%204%201-1%201-1%202%201l1%202%204-3%203-4%202-4c3-2%204-5%202-3l-1-1h-2c-3%203-4%202-1%200%202-3%202-4-1-2-1%201-2%202-3%201s-1-1%201-2v-2l-5%203m-119%204l-5%206-5%207c-3%203-3%203-1%203%202%201%202%201%201%203v1l2-2%202-2-1%202-2%204c-2%202-2%202%202%204%203%203%203%203%205%201%205-4%201%201-4%207-6%206-7%208-4%207h1l2%201c2%200%203%201%203%202%201%201%201%202%202%201l2%201%202%201c2%200%200-2-3-3-1-1-2-1-1-2l1-1c0%201%202%200%203-2s3-3%203-2l2-1h-1c-2%200-1-2%201-3h1l3-2c3-4%203-4%2010%204l7%207-6-8c-5-6-7-9-6-10%201%200%201-1-1-1v-3c1-1%203-2%204-1%201%200%208-6%208-8s-4-6-6-6l-1-1c0-1-1-2-3-2-3-1-7%202-7%205%201%202-2%206-4%206l-4%203-2%201%202-2%201-3c0-1-5-3-6-1l-1%201v-3c1-3%201-3%202-2%203%203%207%203%209%200l2-2-5-1-3-1%202-2%201-2%203-1c1-2-4-1-7%202m152%2028l2%201%204%203%202%201h2l5%202%205%202%203%202%203%201h-3c-3-1-3-1-2%201l4%203c3%201%203%201%202%202v1c2%200%204%200%2013%205%206%203%207%203%207%206l-1%203-1%202%201%202%201%2011%201%2012a336%20336%200%2000-1-44c0%205-1%207-2%208l-1-1-1-2h-4v-1l-5-4c-4-1-6-2-7-4-1-3-7-6-10-6l-5-2-12-4m-55%201l-1%202-1%202-1%202-1%203c-2%201-1%202%203%203%205%203%203%204-4%201l-2%201-1%201c-2%201-2%201-1%202v3c0%202%201%203%204%200%202-1%205-1%204%201-1%203%202%203%204%201s4-3%205%200l3%201c2-1%201-4%200-4-2%200-3-2-1-2%202-2%201-3-2-2-2%200-3%200-5-2l-3-2v-4c3-5%203-8%202-8l-2%201m-133%2015c-3%204-4%205-1%205l1-1c-1%200%200-2%202-3%203-2%204-2%201%202l-2%202%202%201%202%202c-1%202%201%204%203%204s4%202%203%204c0%202%207-6%208-8%200-2%200-2%201-1h1v-1l-1-2h-3l-2-1c1-1%200-2-1-3l3%201h5l-2-2%201-1%202-2-4%201h-14c-1-2-2-1-5%203m-3%207l-3%205c-3%203-3%203-1%204%203%200%203%200-1%205-3%204-5%2010-4%2011%202%200%203-1%203-3l1-1%201-2h1l1-2h-2l-2%201%202-3c4-2%208-10%207-12-1-3-3-5-3-3m5%208l-1%201-2%203-2%204-3%206-2%202-2%203v3c2%202%204%201%207-3%204-6%205-6%203-1-1%202-2%204-1%205l-1%201c-2%200-4%203-4%206%200%202%200%202%202%200l8-13-1-3c-1%200-2-1-1-2l4-5c1%201%202%200%204-3%201-2%201-2-2-4-4-2-6-3-6%200M1%20362c1%200%201%201%200%200l-1%201%201%201v1l-1%201%202%201h1l-1%201c-3%200-3%2021%200%2023v4c-2%200-3%202-1%203%202%202%2020%202%2021%201h1l2%201v-3c1%200%201-1-1-2-2-2-2-2%206-5l7-2%204%204%204%202%201-2v2h1l2-2-1-2h-2c-3%201-7-2-5-3v-1h1l4-1v-1l-1-1%204%201c2%202%202%202%200%204-1%202-1%202%201%202%201%200%202%200%201-2l7%205c8%206%208%207%2014%207%205%200%206%200%206-2h1c0%202%201%202%204%202l4-1v-7c1-6%200-8-2-5%200%203-2%201-1-1%200-3-2-2-4%201l-1%201c0-5%201-7%205-8l4-2h-4l-4%201-1%202-1%202-2%202c-1%202-1%202-1-1l1-3%201-2v-3l1%201%208-3%205-3h4l3%201%201%201-4%202-1%201c1%200%201%201-1%203l-4%202h-1l-2%201-2%201%207-1c4-2%206-2%208-1%201%201%201%201-1%202l-5%201v1c1%201%2016-4%2020-7h-2l-7%201c-4%201-4%201-2-1%201-1%201-1-1-1l-4%202-2-1%207-3%206-3h1l3-2h2l-1%202h1c2%200%203%200%202%201%200%201%201%201%206-1l1%201h1c4-2%205%201%204%206l-3%204v4c0%203%200%204-1%203l-1-1v2c1%202%201%206-1%205h-2v1l1%202%2012%201c12%200%2013-1%2011-2l-2-2h3c2-1%202-1%201-2s-4%200-7%201c-6%202-9%203-8%201l-1-1-2-2c0-1%201-2%202-1%202%200%202%200%201-1s-2-2-1-5h3l-1-1-1-2%202%201%202%202v-2c-2-2%200-4%204-2%203%202%203%202%203%200%201-1%201-2%203-1%203%201%204%202%203%204-2%203%200%204%201%201%201-2%202-2%204%200%203%201%203%201%202%202v1c2-1%203%203%201%206%200%203-5%204-6%203l-2-1c-2%201%200%203%202%203l11-4c13-6%2013-6%2012-1v5h8c7%200%2010%200%2013-2%207-3%2010-3%2010-2l-2%203c-1%201-1%201%201%201l5-1c1-2%202-2%204%200l11%201h8l-7-4c-8-4-8-5-7-3l-1%201-1-1v-2c-5-3%203%200%2011%204l11%205c1%200-1-2-11-7-3-1-4-3-2-3l10%205%2012%205c2%200%202%200%200-1-3-1-3-2-2-6v-3l-1%201-7-3-6-4c2-1%200-2-2-1l-2%202-2%201-4%202c-2%202-2%202-3%201v-3c1-2%200-2-3-1v4h-3c-1-1-5%201-5%203l-1%201-5%201c-7%203-8%203-7%201v-3l-1%203-2%202%201-4v-3l-1-2c1-2-1-3-2%200l-2%201h-3c-1%202-2%201-1-2l-1-3v-1c1-1%201-1-1-1-2%201-2%200-2-1%200-2%200-2-2-2-3%201-23-10-21-11l-1-1v-3h-4c-1%200-1-1%201-2l3-2h-24l-29%201c-3%200-5%201-9%204-5%204-14%209-15%208l1-6%201-6-10-1c-1%209-3%2021-5%2022h3c2-1%203-1%203%201v14c0%202%200%202-3%200l-3-4h-1v-1h-1v-1h-1l-1-1-2-2c-3-2-3-2%202-4l4-1-4%201c-7%201-10%201-9-1h-1l-1-1v-1h-1l-1%201v-2c0-2-9%201-10%202-1%202-6%203-7%202s3-4%204-3l1-2v-2l1%202%201%201v-7l-2%201-2%201-1%202c1%201%200%202-1%203-3%202-3%202-4-1%200-2%200-3-1-2h-1l2-3v-4l2-1h1l2-1h2l1-1v2h2c2-1%202-2%200-2-1-1-1-1%201-1h2l1-1c0-2%203-3%207-3l4-1c2-1-11-1-16%201l-4-1-2%201-4%202-3%202h-2c-1-2-1-3%202-4s2-1-12-1c-8-1-10%200-10%201m167-1l9%205%2010%207c2%202%203%202%203%201h3c1%201%202%200%204-1%207-5%2014-7%2013-4-1%202%200%202%202%201v-1l-1-1c2-2-1-3-4-2h-5l-1%201-1-1v-3h-2l-2%201-7-2-3-1h-7l-1-1-1%202c0%202-1%202-5%200-3-2-4-2-4-1m78%201v2c1%200-3%2016-5%2017l-4-1-4-2a215%20215%200%200028%2016c1%201%202%201%206-1l4-1%201-1h1l1-1h1l1-1h1v-1l1-1c1%201%202%200%202-2%200-3%201-5%202-4l-1%203v3l1-1h1l1-1%201-1%201%201%202%201%202%202%201%201v1h-1v4l-2-1-2-2v1l-1%201v1l-2%201c-1-1-2%200-3%201-1%202-2%202-5%201h-2l2%201c3%202%205%202%205%201h2c2%201%204%200%2010-3%209-5%2011-5%2010-1l-3%203c-6%200-3%202%203%202l7-1v-1l-2-2h-1c0%202-3%200-2-2%200-1%201-2%202-1%203%201%200-2-4-3l-3-3h3l9%206%207%205h-2l7%202c5%200%205%200%206-4l1-5-3-1c-3-3-12-5-11-3h-2l-3-3-5-3c-5-3-6-4-3-5v-5l1-2c-1-3-7-7-11-7l-2-1-3-1h-2l2%202%202%202h-1c-2-1-2-1-2%201s0%203-4%202c-4%200-4%200-3%202%201%201%202%202%204%201%202%200%203%200%202%202l1%201v2h-2l-1%201c-1%203-3%204-3%201l-2%202c-2%204-2%204-3%200l1-2%202-2%202-4-5-2-5-1v-1l-1-1h-1l-1-1c-3%201-6%200-3-1h-1c-3%200-3%200-2-1v-1l-4-1h-3c-2%200%200%202%206%205%207%203%208%204%207%206l-2%202-3-3h-1c-1%201-1%201-1-1l-2-1c-6%200-7-1-7-2h-2l-1%201c1%201%200%201-1%201v-1l1-4c0-3-3-5-3-2m75-1v8c1-1%201-1%205%201%203%202%203%202%201%202h-2l2%201c1%201%204%202%205%201%202%200%203%200%202%201l2%202c4%202%202%202-4%200l-6-1c0%202-1%202-4%200-8-3-5%200%203%204l9%204%202%201v3l2%201-1%201c-1-1-2%200-2%204l-1%204%202-4c1-2%201-3%202-2%200%201%201%202%203%202l2%202c0%204%203%204%2030%204h27v-40h-40c-34%200-40%200-39%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/1568d8300bdfcc8c3eec5baa8dfea5f9/6050d/local_agent_cover2.png"}}},"authors":[{"authorsPage":true,"bio":"Hello everybody 👋 !  My name is Luke and I am the creator and owner of the spaceout.pl. Personally, I am a big geek with huge love for Star Wars, Marvel and DC comic books, Funk and 80s music. I take most of my design inspiration from offline experiences like going to art museums, galleries and working with other creative people on various projects. I also work with various Activist and NGO groups as a pro-bono designer and developer.\n","id":"f69d27c7-7f9a-5fbd-b05d-1a324fd10c0a","name":"Luke Celitan","featured":true,"social":[{"url":"https://www.facebook.com/spaceout/"},{"url":"https://twitter.com/spaceout.pl"},{"url":"https://www.instagram.com/spaceout.pl/"},{"url":"https://huggingface.co/MassivDash"},{"url":"https://bsky.app/profile/lukecelitan.bsky.social"}],"slug":"/authors/luke-celitan","avatar":{"small":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/afb2b/spaceghost.jpg 13w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/7c20e/spaceghost.jpg 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/03612/spaceghost.jpg 75w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/58718/spaceghost.webp 13w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/74aad/spaceghost.webp 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/ed320/spaceghost.webp 75w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 50px) 100vw, 50px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"medium":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/7c20e/spaceghost.jpg 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/59538/spaceghost.jpg 150w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fd013/spaceghost.jpg 200w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/74aad/spaceghost.webp 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/d9b14/spaceghost.webp 150w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/6b183/spaceghost.webp 200w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 100px) 100vw, 100px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"large":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/a2637/spaceghost.jpg 82w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/15203/spaceghost.jpg 164w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/2d087/spaceghost.webp 82w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/29d87/spaceghost.webp 164w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 305px) 100vw, 305px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"}}}],"basePath":"/","tech":["AI","Rust","Linux"],"category":"Post","slug":"/the-sovereign-workstation-agent-building-a-native-ai-platform-with-llama-cpp-rust-and-linux","id":"aa978194-f0b0-57ef-a8ca-be817dbe5bba","title":"The Sovereign Workstation Agent: Building a Native AI Platform with llama.cpp, Rust, and Linux","appDescription":null,"mailchimp":false,"next":[{"id":"c48bf546-9834-5742-ae92-7dbc039a2c26","slug":"/ai-cant-count-give-it-a-calculator","secret":false,"title":"AI Can't Count","author":"Luke Celitan","date":"July 16th, 2026","dateForSEO":"2026-07-16T00:00:00.000Z","timeToRead":8,"excerpt":"I benchmarked 21 language models on plain arithmetic. Only the slow, expensive ones could add a column of numbers — and here's why that should change how you build","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"AI Can't Count\",\n  \"excerpt\": \"I benchmarked 21 language models on plain arithmetic. Only the slow, expensive ones could add a column of numbers — and here's why that should change how you build\",\n  \"date\": \"2026-07-16T00:00:00.000Z\",\n  \"hero\": \"aicount_cover.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"AI\", \"SoftwareEngineering\"],\n  \"slug\": \"ai-cant-count-give-it-a-calculator\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"can-ai-actually-count\"\n  }, \"Can AI actually count?\"), mdx(\"h3\", {\n    \"id\": \"introduction\"\n  }, \"Introduction\"), mdx(\"p\", null, \"Here\\u2019s the thing nobody tells you when they demo a shiny AI feature over a\\nspreadsheet: the model reading your data and the model calculating your data are\\nnot the same skill, and one of them is a lie.\"), mdx(\"p\", null, \"I\\u2019ve spent the last few years watching business stakeholders fall in love with\\nthe idea of pointing a language model at a table of numbers and asking it a\\nquestion. \\u201CWhat\\u2019s the total?\\u201D \\u201CHow many are overdue?\\u201D \\u201CWhich one is under\\nbudget?\\u201D It feels like magic. It\\u2019s fast, it\\u2019s cheap, it talks back in a full\\nsentence, and \\u2014 this is the part that should terrify you \\u2014 it never says \\u201CI\\ndon\\u2019t know.\\u201D It just returns a clean, confident, beautifully formatted number.\"), mdx(\"p\", null, \"The problem is that the number is frequently wrong. Not \\u201Crounding error\\u201D wrong.\\nWrong wrong.\"), mdx(\"p\", null, \"So I did what I always do when the hype and my gut disagree: I ran the\\nexperiment. I put 21 language models \\u2014 the full spread of GPT, Claude and\\nGemini, from the GPT-3.5 era all the way up to the latest GPT-5 and Claude\\nreleases \\u2014 through a benchmark whose only job was to answer one embarrassingly\\nsimple question:\"), mdx(\"p\", null, \"If I hand a model a list of numbers and ask for the total, how often is it right\\n\\u2014 and what does the right answer actually cost me?\"), mdx(\"p\", null, \"Over a thousand scored runs later, I have an answer. It is not the answer the\\ndemos promised.\"), mdx(KeyFindingsStats, {\n    data: keyFindings,\n    mdxType: \"KeyFindingsStats\"\n  }), mdx(\"h2\", {\n    \"id\": \"the-failure-mode-is-silent-and-thats-the-whole-problem\"\n  }, \"The failure mode is silent, and that\\u2019s the whole problem\"), mdx(\"p\", null, \"Let me start with why I even bothered, because it connects to something I\\u2019ve\\nbeen banging on about for years.\"), mdx(\"p\", null, \"In a normal engineering team, quality is defended by constructive friction \\u2014 the\\npull request that gets a raised eyebrow, the reviewer who says \\u201Cwait, are you\\nsure about that?\\u201D, the crucible of collaboration where a wrong answer gets\\ncaught before it ships. I wrote about how AI is quietly dissolving that friction\\nin \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/the-rise-of-the-solo-dev-army\"\n  }, \"The Rise of the Solo Dev Army\"), \". Well, an LLM\\ndoing arithmetic is that dissolution taken to its logical, horrifying\\nconclusion.\"), mdx(\"p\", null, \"When a model can\\u2019t add a column, it doesn\\u2019t throw an error. A calculator that\\ncan\\u2019t compute shows you \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ERR\"), \". A database returns null. A failing test goes red.\\nThe LLM does none of that \\u2014 it hands you \\xA34,182,940 in a tidy little sentence\\nand moves on. There\\u2019s no red flag, no raised eyebrow, no reviewer. The one\\nmoment where you most need someone to say \\u201Care you sure?\\u201D is the exact moment\\nthe machine is most confident and most alone.\"), mdx(\"p\", null, \"That\\u2019s not a bug you can grep for. It\\u2019s a category of failure that looks exactly\\nlike success.\"), mdx(\"h2\", {\n    \"id\": \"the-experiment\"\n  }, \"The experiment\"), mdx(\"p\", null, \"I kept the setup deliberately boring so the results couldn\\u2019t be argued with:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"21 models, three vendors\"), \" \\u2014 OpenAI, Anthropic, Google \\u2014 all called through\\none identical, OpenAI-compatible interface so nobody got a home-field\\nadvantage.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Five task families\"), \", from dead-simple counting to multi-step financial\\nreasoning.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Deterministic ground truth.\"), \" Every \\u201Cright answer\\u201D was computed in code \\u2014 a\\nplain reduce over the array for sums, a code tally for counts. The model was\\nscored against math, not against a vibe.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Strict scoring.\"), \" Exact match or it fails. \\u201CClose\\u201D is a fail. A wrong total\\nis a wrong total.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Full cost telemetry\"), \" \\u2014 every call logged its input/output tokens, latency,\\nand an estimated dollar cost.\")), mdx(\"p\", null, \"The five families ranged from a pure sum benchmark (add 25 to 500 numbers, up to\\nseven digits each), through counting and grouping tasks (tally rows by status,\\nbucket events into a timeline), up to genuine calculation and reasoning (derive\\nratios, compare one property\\u2019s rent and value against a peer at easy/medium/hard\\ndifficulty).\"), mdx(\"h2\", {\n    \"id\": \"two-regimes-and-a-cliff-between-them\"\n  }, \"Two regimes, and a cliff between them\"), mdx(\"p\", null, \"The headline finding is that models don\\u2019t have a level of numeric ability. They\\nhave two, and there\\u2019s a cliff in the middle.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Task family\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"What the model must do\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Best result\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Work-order timeline\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Group events by creation date\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"88%\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Work-order counts\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Tally rows by status\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"85%\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Property KPIs (easy)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Compute a ratio when told the formula\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"100%\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Sum benchmark\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Add a list of numbers\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"30%\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Fund financial KPIs\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Derive ratios unaided\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"5\\u201324%\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Property KPIs (hard)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Choose the method yourself\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"0%\")))), mdx(TaskFamilyAccuracyChart, {\n    data: taskFamilyAccuracy,\n    mdxType: \"TaskFamilyAccuracyChart\"\n  }), mdx(\"p\", null, \"Read that top to bottom and you can see the personality of these things emerge:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Counting and categorising holds up beautifully\"), \" \\u2014 85 to 100%. Ask a model\\nto find things, route things, group things, and it\\u2019s genuinely excellent. This\\nis reading comprehension over structured data, and it\\u2019s what transformers are\\nactually good at.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Calculation collapses\"), \" \\u2014 0 to 30%. The moment the task requires arithmetic\\nthat isn\\u2019t in the text, the floor gives way.\")), mdx(\"p\", null, \"My favourite result in the whole study is the \\u201Chard\\u201D property KPI: every single\\nmodel got the magnitude of the answer right and then flipped the sign. They all\\nknew the two numbers were \\xA3200k apart. They just couldn\\u2019t reliably decide\\nwhether the property was over or under the peer. Right maths, wrong direction,\\ndelivered with total confidence. If you want a one-line summary of where we are\\nwith AI and numbers, it\\u2019s that.\"), mdx(\"p\", null, \"Give the model less hand-holding and the cliff gets steeper. Both KPI families\\nfall apart the moment the prompt stops spelling out the formula:\"), mdx(KpiTierChart, {\n    data: kpiTierData,\n    mdxType: \"KpiTierChart\"\n  }), mdx(\"h2\", {\n    \"id\": \"ai-cannot-count-the-sum-test\"\n  }, \"\\u201CAI cannot count\\u201D: the sum test\"), mdx(\"p\", null, \"The pure addition test is where it gets brutal. Across 21 models and 189 cases,\\nonly 30% were correct (56 out of 189). And the accuracy wasn\\u2019t evenly spread \\u2014\\nit decayed predictably as the task got bigger:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"On short lists of 25 numbers, models managed 43%.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Scale that to 500 large numbers and it falls to 14%.\")), mdx(\"p\", null, \"More numbers means more carries to track. More digits means longer arithmetic.\\nBoth hurt, and the errors aren\\u2019t random noise \\u2014 models confidently round, drop,\\nor straight-up invent digits to produce a plausible-looking total.\"), mdx(AccuracyDecayChart, {\n    data: accuracyDecayData,\n    mdxType: \"AccuracyDecayChart\"\n  }), mdx(\"p\", null, \"But here\\u2019s the split that actually matters for anyone choosing a model:\"), mdx(\"p\", null, \"Zero of the 13 non-reasoning models could add at all. GPT-4o, GPT-4.1, GPT-3.5,\\nthe standard Claude models, GPT-5 Chat \\u2014 0 out of 9 each. The only models that\\ncould reliably add were the \\u201Creasoning\\u201D models (the GPT-5 and o-series), which\\nscored 6 to 9 out of 9. Here\\u2019s every model in the study, ranked:\"), mdx(ReasoningVsChatChart, {\n    data: sumAccuracyByModel,\n    mdxType: \"ReasoningVsChatChart\"\n  }), mdx(\"p\", null, \"Let that sink in. The friendly, fast, cheap chat model that every product team\\nreaches for first? It cannot add a column of numbers. Not \\u201Csometimes gets it\\nwrong.\\u201D Never gets it right.\"), mdx(\"h2\", {\n    \"id\": \"why-being-right-is-so-expensive\"\n  }, \"Why being right is so expensive\"), mdx(\"p\", null, \"This is the part I find genuinely beautiful, in a bleak sort of way. It explains\\neverything.\"), mdx(\"p\", null, \"An LLM has no calculator inside it. There is no arithmetic logic unit hiding in\\nthe weights. The only way a model can be right about a sum is to simulate the\\narithmetic in generated text \\u2014 to literally write out \\u201Ccarry the one\\u201D step by\\nstep, one token at a time. And generating tokens is exactly the part that costs\\nmoney, time, and energy.\"), mdx(\"p\", null, \"Look at what separates a right answer from a wrong one:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Metric\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Gets it RIGHT\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Gets it WRONG\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Output tokens per sum\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"6,000\\u20139,000\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"~4\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Time per answer\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"40\\u2013130s\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"~1s\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Method\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Full step-by-step working\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Single blurted guess\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Result\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Correct\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Wrong, every time\")))), mdx(\"p\", null, \"The wrong models are cheap and fast because they\\u2019re guessing. The right models\\nare slow and expensive because they\\u2019re doing the equivalent of long addition on\\na whiteboard, out loud, and you\\u2019re paying by the word. Correctness isn\\u2019t a\\nsetting you toggle \\u2014 it\\u2019s compute you buy.\"), mdx(\"p\", null, \"Which leads to the numbers that made me sit up. The peak cost for a single\\ncorrect sum in my run was $0.92 \\u2014 one addition problem \\u2014 from o1 grinding\\nthrough 500 seven-digit numbers. That\\u2019s roughly 360\\xD7 more expensive than a fast,\\nwrong answer at about a quarter of a cent. Across the study the gap between\\nright and wrong ran from 100\\xD7 to 700\\xD7.\"), mdx(CostPerSumChart, {\n    data: costPerSumData,\n    mdxType: \"CostPerSumChart\"\n  }), mdx(\"p\", null, \"You are, quite literally, paying two to three orders of magnitude extra for the\\nprivilege of a correct total that a for loop would have produced for free.\"), mdx(\"h2\", {\n    \"id\": \"you-dont-get-what-you-pay-for\"\n  }, \"You don\\u2019t get what you pay for\"), mdx(\"p\", null, \"If you think price signals quality \\u2014 that the expensive flagship must be the\\nsmart one \\u2014 the arithmetic results will disabuse you fast. I sorted every model\\nby its output-token list price and lined it up against how many sums it got\\nright:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The two most expensive models per output token (a top-tier Claude Sonnet at\\n$75/1M, GPT-4 at $60/1M) scored 0 out of 9.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The two cheapest (GPT-5 Nano at $0.40/1M, GPT-5 Mini at $2/1M) scored 8 and 9\\nout of 9.\")), mdx(PriceVsAccuracyChart, {\n    data: costVsAccuracyData,\n    mdxType: \"PriceVsAccuracyChart\"\n  }), mdx(\"p\", null, \"The price tag reflects the vendor\\u2019s positioning, not the model\\u2019s ability to\\ncount. The single best value in the entire study was GPT-5 Nano \\u2014 the cheapest\\nthing I tested \\u2014 landing 8 of 9 at about $0.004 per sum. The premium tier\\u2019s best\\neffort, o1, managed 6 of 9 for up to $0.92 \\u2014 beaten, badly, by a model costing a\\nfraction of a penny.\"), mdx(\"p\", null, \"This is the AI equivalent of a lesson I keep having to relearn on the business\\nside. Over in \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/mastering-agile-estimation\"\n  }, \"Mastering Agile Estimation\"), \" I\\ncomplain that your business overlords don\\u2019t care about the code, only the\\nfeatures, and they\\u2019ll happily equate \\u201Cexpensive\\u201D with \\u201Csafe.\\u201D Same trap here.\\nNewer and pricier does not mean it can do the maths. Sometimes it means the\\nopposite.\"), mdx(\"h2\", {\n    \"id\": \"claude-vs-openai-a-closer-look\"\n  }, \"Claude vs OpenAI: a closer look\"), mdx(\"p\", null, \"One question I kept getting when I shared early results internally: is this just\\nan OpenAI-favours-OpenAI story? Not quite. Restricting the comparison to\\nOpenAI\\u2019s and Anthropic\\u2019s standard models (Gemini set aside for this one, and\\nClaude\\u2019s extended-thinking variant wasn\\u2019t available through our gateway, so this\\nis standard Claude vs the full GPT lineup including its reasoning models):\"), mdx(ClaudeVsOpenAIChart, {\n    data: claudeVsOpenAIData,\n    mdxType: \"ClaudeVsOpenAIChart\"\n  }), mdx(\"p\", null, \"OpenAI wins the overall pass rate \\u2014 54% vs 40% \\u2014 and wins five of the seven\\nbenchmarks outright. But Claude isn\\u2019t uniformly behind: it actually \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"beats\"), \"\\nOpenAI on the work-order timeline task, 93% to 85%. The one place OpenAI\\u2019s lead\\nturns into a rout is arithmetic itself \\u2014 32% vs 13% on the sum benchmark \\u2014\\nbecause OpenAI\\u2019s reasoning models (GPT-5, o-series) were reachable through the\\ngateway and Claude\\u2019s equivalent extended-thinking mode wasn\\u2019t part of this run.\\nBest at counting, no contest: GPT-5 at 9/9 versus Claude 4.6\\u2019s 5/9.\"), mdx(\"h2\", {\n    \"id\": \"isnt-this-just-ai-hype-cycle-whiplash\"\n  }, \"Isn\\u2019t this just AI-hype-cycle whiplash?\"), mdx(\"p\", null, \"Fair challenge. I\\u2019m the one who wrote\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/beware-of-the-hype-train\"\n  }, \"Beware of the Hype Train\"), \", so let me apply my own\\nskepticism in both directions.\"), mdx(\"p\", null, \"No \\u2014 this isn\\u2019t me saying \\u201CAI is useless.\\u201D It emphatically isn\\u2019t. Reading,\\nrouting, summarising, grouping, explaining: models are genuinely, reliably good\\nat all of it, and that\\u2019s a real superpower. The hype I\\u2019m puncturing is narrower\\nand more specific: the pervasive assumption that because a model can talk about\\nnumbers fluently, it can compute them correctly. Fluency is not accuracy. A\\nmodel that describes your portfolio in flawless prose and then fumbles the total\\nis not \\u201Calmost there\\u201D \\u2014 it\\u2019s doing two completely different jobs, and it only\\npassed one of them.\"), mdx(\"h2\", {\n    \"id\": \"so-what-do-you-actually-do-about-it\"\n  }, \"So what do you actually do about it?\"), mdx(\"p\", null, \"The fix is refreshingly unglamorous, and I like it all the more for that. Don\\u2019t\\nlet the model be the calculator.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Do\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Don\\u2019t\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Compute numbers in code or a tool call\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Ship a raw model total to a user\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Use models to read, route, explain\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Assume a bigger model fixes maths\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Reserve reasoning models for high stakes\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Use a chat model where exactness matters\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Validate against deterministic ground truth\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Trust a confident, formatted number\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Log tokens and cost\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Ignore the compute spend\")))), mdx(\"p\", null, \"That last row matters more than it looks. Because correctness is bought with\\noutput tokens, and tokens are compute, and compute is energy, \\u201Cget it right\\u201D and\\n\\u201Cuse less energy\\u201D pull in opposite directions when you make the model do the\\nmaths. Push the arithmetic down into code and you\\u2019re not just more accurate and\\ncheaper \\u2014 you\\u2019re greener. The deterministic path wins on every axis at once.\\nIt\\u2019s the same instinct as wiring a SonarQube quality gate into CI: you don\\u2019t\\nhope the number is right, you make it impossible for a wrong one to get through.\"), mdx(\"h2\", {\n    \"id\": \"final-thoughts\"\n  }, \"Final Thoughts\"), mdx(\"p\", null, \"We spent decades building machines that were flawless at arithmetic and hopeless\\nat language. Then we built one that\\u2019s wonderful at language and, it turns out,\\nhopeless at arithmetic. The mistake is asking the new machine to do the old\\nmachine\\u2019s job.\"), mdx(\"p\", null, \"So the whole thing collapses to one sentence: AI can\\u2019t count \\u2014 so give it a\\ncalculator. Let the model do what it\\u2019s brilliant at \\u2014 reading, routing,\\nexplaining \\u2014 and hand the actual maths to code that provably can\\u2019t get it wrong.\\nReserve the slow, expensive reasoning models for the rare case where exactness\\nis genuinely worth the cost, and verify every number before it reaches a human.\"), mdx(\"p\", null, \"Because the one thing this whole experiment confirmed is the thing I opened\\nwith: nobody in that loop is going to raise an eyebrow for you. You have to\\nbuild the eyebrow in.\"));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["AI","SoftwareEngineering"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVQ4y12UaXNTVRjH7/dwZBMZBFpKF9omzXqTm9zk3iQ3TTe6JiW0pWnLbdK0SVdW2RxAB1AcZRVklZZVQXyBjAu+EJlxnPHD/HxaHB198Z/nnOc85/+s5yh/vrzHk9tnWLx6ktPHi+wrDwiGeH9+hI+OTrIwtYvyeIaSnRZkyPYmabVC5Ecy7OxtIdPTQjbdQW4wTfeOFpQ/fr7HwxunufTxAcp2L12tIYazreyb3s2x/TYHZoYpjPQwPtzNXHEAe3c3me6kEPTQ0WJgRvzEDY1myyCkqSi/Pr/D0rUPuXHxA2YK/YT927FML13tEbJ9FqXxfk4dmeLYgQKlfFb0hhCoWPEQqs9BWPMIfCTiEWKxKMov393k+vnjXD53mE9OLWDnutA1B1HdTSTsImUFGcq2kx9LMyrRWfEg0YiPzo4kwaCHuBkmHosQDPgI6yGU1z/cZ+n6WW5ePsWlT49y8mgZI+qVSwKRhuHHNAPszLSRGxLCREig09PViqp6SFqmEPtxu5vw+/0or358wNeL53l893POntrH6LDUy97J4EAnBTtLMT9InxR/ZDjNSC5DPB4WR0Ha2iwh8ODzedAlsljcJGoaKC+fL/L0/hVOHJsVI5POzgRjY/0U8gOUp3JMl0Y5fnSeyeIIoyNZotIAf8Ajts14vC60UACf6kMLC6llLRMucf7ccUlLk0MfunQt1WISt8KYMU32Ku0dFplMJ7ncLqzmOAcPzMp6AEeTk4ihY8RMfIEgfi2M8uLZHR7cuUBHRwI16KavrwNdUopJnZzuBqpqKvCqLoZzWbIDGdKZHubmpzDjhuh9QqQSCGmEDZNkaxvKs0df8uCriySbI+JRRiZpiJF0Lxkl1WoJYSV1DTWk2pKUygUOHlrAo3rRDemspLlMpuk6uhlHi8ZQHt69xON7V2ltS+DxO3F5G1cI6hprUDU/9U5xkorT6HaQHexHDQdxSiMikmaj24VPC5BobhapU+/yoTxausJn505IUf3MzuZZ2DuF0yMDa4RodDnEiZuJSZtEyqJJurrdJU4lzVA0QpPPK9GqaJEoTq8q50GUpw9vUJoaY1PFRsrlcZ4+WaS9s1UiayDZkiRs6uzJj1KYmiBnj6JGdLnow0jEcAmhLxggKCkH9KjYJlC+eXSLCxfOUFG9hbbOFhbv3STZnsIjw2rJaHT0dNI/tIvCdImZ/XsJWwkahTAQ1al1OvBqQfREnFAsQTjRjHK4y+Twjii9tRsYbNrKQkpjt6eaIVcVdqCBsUA9tjzFouGlFPMz4Kom07CFrKOSntqNpOs3099YQdZZJWc1KHblKqadW5hzVTDvqVpZzza9wZy7kmnHJvJbV71B5dtMbFtDsXotxW1rmaxe98+6KPrlM6VQ+y6HTA8LWgOHEypHkgH2684V3RErwLxah121mnzNOxT+g3UUhLDwP71SbHiPQu16JrZvYKRyNbmKVStydOtqxqrWYtesZ9KxmQmxy9dtwBbbPaKz/8aemn/3y1J5fPeKfAxf8HjpGnvnJnE45HVUVZBqjpFOd9Pe1kJeujszPUWhYNOX7pU3LJ+C143TUU+TsxGvx4XL7cbt8aL8/tsLXr/6npc/fcut25epE6O31qxifGKU3J7cyuCmd+1kemGGydky+dIkQSOKXwZ8u4yWQ8jc6vIMqtQ6nPwFSIU8xj9I2YoAAAAASUVORK5CYII=","aspectRatio":1,"src":"/static/725d97828fb6c30617a3e305656acfc3/a1946/aicount_cover.png","srcSet":"/static/725d97828fb6c30617a3e305656acfc3/5b37e/aicount_cover.png 236w,\n/static/725d97828fb6c30617a3e305656acfc3/49058/aicount_cover.png 472w,\n/static/725d97828fb6c30617a3e305656acfc3/a1946/aicount_cover.png 944w,\n/static/725d97828fb6c30617a3e305656acfc3/6050d/aicount_cover.png 1200w","srcWebp":"/static/725d97828fb6c30617a3e305656acfc3/99fbb/aicount_cover.webp","srcSetWebp":"/static/725d97828fb6c30617a3e305656acfc3/77392/aicount_cover.webp 236w,\n/static/725d97828fb6c30617a3e305656acfc3/1f177/aicount_cover.webp 472w,\n/static/725d97828fb6c30617a3e305656acfc3/99fbb/aicount_cover.webp 944w,\n/static/725d97828fb6c30617a3e305656acfc3/9000d/aicount_cover.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M95%203c0%203%200%204-3%204s-10%206-9%207l-2%201h-2v2c-1%201-3%201-9-2l-10-3%208%204%209%204-1%204v4l10%205-6-2-6-1c-1%200%201%202%205%203l6%203-7-2-7-2%202%202-1%201c0%202-2%202-5%201a217%20217%200%2000-26-9v1l21%208%209%204v3c-1%204%202%2013%204%2013l1%202c0%202%200%202%201%201%200-2%200-2%203-1%202%201%202%202%201%204-1%205%203%2012%207%2015l5%204%203%202v-1c-3-2-2-3%201-3%202%200%202%200%201%202v1c3-1%204%207%201%2014-1%205-1%205-3%204-4-4-9%200-9%205%200%203%200%203-2%203-3%200-3%200-2%201h-1c-2%200-2%201-2%204h-2l1%202-5%203c-4%204-5%205-9%205-6%201-11%204-18%2011-6%206-15%2018-14%2019%200%202%205%206%208%207%202%201%203%201%202%204l1%207v6c-2%200-2%201-1%201%202%200%202%205%200%206-1%202-2%2016-1%2022%201%203-2%2020-4%2021-2%202-9%2019-7%2019v5c0%204%200%205%202%208%203%204%205%2010%206%2017l1%207v3H0v37l1%2037h62l2%204c1%203%202%204%204%204%205%200%207%203%206%2010-1%205-1%207%201%2010l2%204-2%203c-3%205-2%206%202%202l3-3v3l-1%203h50l2-12%203-20%202-7h4l3%201v15l-1%2014%203%204c2%205%206%207%207%204h1c0%202%203%201%204-1%200-2%202-2%202-1%200%202%203%203%2012%203h9l-2-3-3-6-2-9c0-4%200-6-1-5l-14%201-13%202h-1l1-2%2014-1c16-2%2024-1%2024%203h1c2-3%204%200%204%205v4h-3l-4-1v-1h-1l-3-1h2l1-1-1-1-2-2c-1-2-1-2-1%201%200%205%201%209%202%208l4-1c3%200%203%200%203%203%200%202%200%202-1%201-2-2-3-1-3%201h-1c-2-2-1%200%201%203%201%202%201%202%201%200%200-3%202-3%203%200%202%203%204%202%204-2l1-5%201%204v5h10l1-10a397%20397%200%20001-24c0-5%200-5%203-5h11c4%200%205%201%205%202l2%201%201-1c0-1%201-2%203-2h3v39l1-7c0-5%200-7%201-5%201%201%201%201%201-3l1-4%201%202v17l3-2c1-2%201-2%201%200s0%202%201%200l1-2v-1l1-7-1-4-2%202-2-1v-3c0-2%200-2%201%200s1%201%201-3c0-3%200-3%201-1%201%201%201%202%203%201v-1c-1-1-1-5%201-6v-4l1-4%201%202%202%202%201-2%201-4c1-1%202%201%202%208s-1%209-2%209l-1-1-1-2c-2-1-2-1-2%203%200%202%201%203%202%203l1%201-1%201c-2%200-2%209-1%2010l1-1c-1-4%200-6%202-6l1-1c0-2%202-1%203%202v4l-1%201h1l1%202v2l1%201c0%202%205%202%207%201h1l2%201c3%200%203-1%203-4l1-3v3c0%203%200%204%202%204h3v-31l1%2015v16h17v-10l1-9v19h10l10-1c-2-1-2-6-1-7l1%203c0%205%201%205%209%205h7v-4c0-4%201-5%201-1s2%207%203%204h2c2%200%202%200%201-1-2%200-2-1-1-1%202-1%201-3-1-3-1-1%200-1%201-1l3%202c0%205%200%205%206%205%205%200%206%200%205-2h1l3%201h2c0%202%203%201%203-1l-2-2v-1c0-2%203-1%203%201h1c0-3%202-1%202%201s0%203%207%203l7-1%201-1%201%201c-1%201%201%201%205%201l6-1c-1-1%200-1%202-1l1%201c-1%201%200%201%202%201h3v-6l-1-6v-5l2-49a294%20294%200%2000-2-49h-1l-1%201%201-3c3-4%203-6%200-6-2%200-3-1-1-2h1l1%201%201-2h-1v-3c1-1%201-1-1-1l-2%201%202-2c3-2%202-8-1-7-2%201-1-1%201-4s3-14%201-12l-1-1v-2c2%200%202-4%202-28v-27h-2l-2-1h2c2-1%203-3%200-3v-1l2-4-2-5v-1c2%200%202-2%202-26%200-15%200-26-1-25l-1%202%201-5V92a307%20307%200%20000-56l1-18V1l-5-1-4%201c1%201%200%202-1%203-2%201-2%201-2-1s0-3-2-3l-2%201c2%202%200%203-2%201s-3%200-3%204c0%203-1%204-2%204-2%200-2%200-1-3%202-4%201-4-6-3l-8%202c-2%201-3%201-2%204%200%204%204%208%205%207l1%204c0%202%200%203-1%202-1-4-5-8-6-7v-2c1-7%200-7-13-3l-10%203-1%201v2c2%200%203%203%201%205-2%201-4-2-3-5s1-3-1-3a35696%2035696%200%2001-18%207v3c-2%201-2%201-1-1%200-2%200-2-1-1v-1l-1-1-4%201v1l1%203h-2v-2c0-2-3-1-18%204l-1%202%201%203v2h-4l2-4-1-1h-1l-2-1v1c2%201%200%207-2%207h-1v-2l-1-2v-2h-2l-1%204-1%204v-8l-7%202-8%203h-1l-7%202a531%20531%200%2001-22%207l-1%201v-1l-2-1-6%202-5%203%201%201c1-1%201%200%201%201l-2%204v2c3%202%201%209-4%2016-1%201-2-3-1-5l-1-3v-2c0-3-1-5-2-2-1%201-1%200-1-4v-5l3%201c4%203%205%202%204-1%200-2%200-2%201%200l1%201c0-4-1-5-5-4l-2%201h-3c-5-1-8-6-4-6l1%202c-1%202%202%201%203-1l1-1c0%202%200%202%207%201%209-3%2011-4%2010-6h1c2%202%202%202%204%201h2l1-1h2V28l-1-1-1%201-2%203v1c3%200-1%202-4%202h-3v-2l-2-2c1-4%201-4%202-1%201%201%201%201%201-1l1-2v4l1%203%201-3c0-3%200-3%201-1s1%202%202-1l1-2%203-1c2-1%202-1%201-2v-2c2-1%202-1%201-2l-2-16-2-3c-1%200-2%205%200%206v7l-1%204-1-2v-1l1-3c0-2%200-2-1%200l-2%204c0%202-1%202-1%201-1-1%200-3%201-4V8l-1-3c0-4%200-5-2-5s-2%200-1%201c2%202%201%2020%200%2022v2h-2v-2c1%200%202-4%200-4V0h-7v5l-1%205V6l-1-5-1%203-1%203-1-1-1-6c-2%201-2%209%200%209l-1%201-1%209c0%2017%200%2016-2%2015v-1c1-1%201-12-1-13l-2-1%201%202v8l-1%206-1%204v-4l-1-4-2%203-2%207v4l-1-6V24l-1-15c0-6%200-8-1-6%200%202-1%202-1%201V1l-1-1-1%2015v15l-1-8-1-7v8l1%209v1c-2%201-2%208%200%2010l2%201h2v1c-2%200-2%200%200%202h5c2%200%202%200%201%201s-1%201%201%201h1v1h2v4l1%202%201-2v2l-1%208-1%201%201-5c0-3%200-3-1%200l-2%202-2-1v-1h-1c-2%200-2%200-1-1v-1h-1l-2-1h-3l-4-3c-4-3-8-4-9-3l-1%201v-4l-3-1%201%202c3%202%200%202-4%200-5-2-7-5-3-4%204%202%204%201%205-1%200-1%200-2-1-1%200%202-1%202-2%201-3-1-4-1-2-3v-2c-4%200-6%201-7%204s-1%203%200%200v-8c0-4-1-4-1%200l-1%203-3%206c-1%203-1%205-2%204l2-6%201-6-4%2014v1c-1-2-1-2-1%200l-2%203v1l2%201h-4v-2l1-2c-1-4%200-7%201-4%201%201%201%200%201-2v-1c1%201%201%201%201-1v-5c0-2%200-2%201%200%201%201%201%200%201-2v-2c0%202%201%202%201%201v-2l-1-2-1-1-1%201-3%206-3%208-3%203v1l1%201-1%201c-1-1-1%200%200%200%200%202%200%202-3%201l-1-2c2%200%209-16%209-20%201-4-1-2-3%202l-2%203%201-4%201-6c0-4-1-4%208%201l8%203%2011%205c16%207%2015%208%2014-3a310%20310%200%2001-1-23V7c2-3%200-7-3-7s-6%202-6%204v1l-1-2-1-2c-1%201-1%204%202%205l2%203c0%202%201%205%202%204l1%201-3%201c-1%200-2%200-1%201%201%200%200%206-2%206v-7c2-1%202-2%200-5-1-4-2-4-2-2-1%201-1-1-1-3%200-10-1-4-1%207l-1%2011-1%202v2l-1%201%201%201c1-1%201%200%201%201%200%202-1%202-9-2l-5-2-6-2c-6-4-7-4-6%200%200%202%200%202-2%201v1l1%203-3-2-2-2-1%203c-1%202-2%203-4%202l-2-4c-1-2-1-2-2%201l-1%202-1-2h-2l1%202h-1l-1%203-2%202v-4l2-9c1-6%201-6-2%205l-2%203-1%201h-1c-2-2-2-1-5%206l-3%208%203-12c4-12%205-16%203-20l-1-3c2%200%208%204%208%205h1l10%203%208%204-3-2-4-4c0-2%200-2-1-1%200%202%200%202-4%200s-4-2-4-8c0-7-1-8-1-2%200%205-1%206-2%204h-2l-1%201V2l-2-2c-3%200-3%200-3%203l1%204v1c-1%200-2-1-2-4-1-5-3-5-3-1l-1%203V3l-1-3c-1%200-2%203-2%207v3l-1-8c0-2-2-1-3%202s-1%203-1%201%200-3-1-2l-2-1c-1-3-3-2-3%201m143%207a129%20129%200%20000%2015v4h6l-3%201c-2%200-5%203-4%204l-1%202c-1%201-1%201%201%201l3-2h5l4-1v-7l1-7v14l6-2c16-4%2017-5%2018-8%200-2%200-3-2-3v-1c2-1%202-3%202-11V0h-8c-8%200-8%200-8%202v3l-1-3c-1-3-6-3-6%200-1%202-1%202-1%200s-1-2-4-2c-4%200-5%201-5%202l2%201%201%201v4c-1%200-4-4-4-7l-1-1-1%2010m37-1c0%209%200%2010%202%2010v1c-2%200-3%207-1%207%203%200%205-3%203-4v-4c-1-1%200-1%201-1%202%200%202%201%202%204v4l2-3c2-3%203-5%201-3l-1-1c0-1%202-3%204-3h1c-3%202-2%208%201%207l4-2c8-1%2013-3%2013-6%200-2-1-2-2-1h-1l4-2v4c0%202%201%203%202%203v-4l1-4v-1c-1-1-1-1%201-1l2%202v2l1%203h2l2-1c5%200%2010-1%209-2v-2c3%200%203-4%200-3V7c2-2%204-2%204%201v3c1%202%203-1%203-4l1-4%201%203%202%204c2%201%208-1%209-3l2-4%201-3h-9l-10%201-3%201c-1%200-2%200-1-1l-4-1c-2%200-3%200-2%201%201%200%200%202-2%202V2l-6-2c-2%201-2%201%200%202%202%202%201%205-2%205l-1-4V0h-18v3l-1%203-1-3c0-3-3-4-5-1v1c1-1%202%200%202%201l-2%201c-2%200-2%200-2-2V0l-2%204-2%202V5l-1-2-1-1-1-2c-2%200-2%202-2%209M92%209l-2%201-2%201v1l1%201h1v2c-3%201-2%202%203%203%206%203%209%202%209-2v-3l1%203%201%202h2l2-1c1-1%201-1%201%202%200%202%200%202%201%200%201-3-1-8-2-6h-1c-1-1-4-3-12-4h-3m136%2051c0%202%200%202-1%201s-2%200-2%204%201%205%202%203a295%20295%200%2001-1%2049V89l-1%206-1%2012%201%207v1l-1%2012-1%2013-1%203-1%204v-6l1-6%201-1-1-1-1-1c-1-2-1-3%201-3l1-2c0-2%200-2-1-1l-1%202c-1%200-1-3%201-4v-3c-1-2-2-3-1-4a345%20345%200%2000-2%2044c1%201%202%201%202-1%201-3%201-1%201%204l1%207v2l1%203v5c0%206%201%202%202-8v-12l-1-3c-1-2-1-3%201-3l3-1-1-1-2-1h-1l-1-1v-2l-1-1h1l1-7%201-7%201%206v6h2l1-1v-4l-2-2c0-2%200-2%201-1l1%201-1-2v-2c1%200%201-4-1-5-1-1-1-1-1%201s0%202-1%200v-5l1-1c1-1%201%200%201%202l1%202a305%20305%200%2000-1-69m64%2011v6a79695%2079695%200%20010-6m-17%2043v34l-9%202c-11%202-12%203-12%205l5%201%204-1-3%203-3%204h2l3%201h-3c-5%200-5%203%200%205%203%201%204%201%203%202-2%202-1%203%201%203%201%201%202%201%201%202v3l-1%202v3c0%202%200%202%202%200l1-3%201-2c1%200%201-1-1-1v-2c2%200%208-8%208-10v-2l1-4c0-1%200-2%201-1%202%200%205-3%205-6l1-2c1%200%200%208-2%2010v2l2%205c-1%202%200%203%201%203v-9l1-2c0-1%201-2%203-1%202%200%202%200%202-2l-1-3v-1c2-1%202-24%200-25l-1%203-1%203-2%201%202%201c2%200%202%201%201%204l-2%204-1-1c0-2-2-3-2-1%201%204-2%207-5%207l-1-34a388%20388%200%2000-1%200M164%2098l-1%203c-1-1-1%200-1%202l1%203%201%203-1%201v7l-1-1-1-1v1c1%202%201%202-1%202-1%201%200%201%202%201s3%200%203-2h1c0%202%202%201%202-1%201-1%201-1%201%201s2%203%203%201h1l2%201v-7l1-1-2-1v-4l1%201c1%202%201%202%201-1s0-3-1-2c-2%202-3%201-3-2l-1-4-1%201-1%201h-2l1%201%201%204v4l-1-4c0-2-1-3-1-1h-1v-6l-1-1c-1-1-1%200-1%201m-71%2012c-5%201-4%201%205%201h10l-11%201c-12%201-16%202-7%202l8%202v2l7%203h-4c-7%200-11%200-10%201l3%202%205%201%207%202c2%201%204%201%204-2l1-1%201-1c-1-1%200-1%201-1l1%202-6%2016c0%201%201%201%201-1l2-2v-1c0-2%206-16%2010-19%202-3%205-4%205-2h2v-1l-1-2c1-1-2-2-3-1h-7c-6-1-19-2-24-1m35%208c-1%202%200%205%201%206h-2c-3%200-4%200-3%201l7%201%201-2c2-1%202-1%202%202l-1%201-4%205c-1%203-3%206-2%207l-3%201h1c4%202%207%202%207%201v-1l1-3-1%201c-2%202-5%200-3-3%201-2%203-3%204-1l4-5c5-7%206-8%205-4%200%203%200%203%201%202%202-1%203%200%202%202l3-2%202-3v-1l2-1h2c5%200%206-2%201-3h-4l-1-1-4-1h-7c-8-2-9-2-11%201m38%203l3%201-2%202c-2%200-2%201-2%202l-3%201c-2%200-3%200-1%201%203%201%2014%206%2013%207h-1l-1%201c0%202%203%201%204%200%201-2%203-3%203-1-1%201%202%203%203%203l1-3h2l2%201-2%201-2%201%202%202h5c-1%202%200%202%202%202v1l1%201-2%204c-3%202-1%203%202%200h4l2%201-1-1c-2-1-2-2%201-4l3-2h7l5-1-4-4c-5-4-9-5-10-3l-1%203v1l-1-1s-1-2-3-2l-2-2%203-1h4c2%200%200-2-3-3-3-2-9-3-9-1s0%202-3%201c-4-2-4-3%201-3h5l-4-2-9-1c-7%200-9-1-4-2%202-1%200-1-4-1-6%200-6%200-4%201m-6%201l-4%201c-3%200-9%206-12%2013-4%206-5%2011-4%2011l1-1%201-1%203-1c1-3%202-1%201%202l1%202%201-1v-2c1-3%200-7-2-7s-1-1%201-5c2-3%203-4%204-3%202%201%203%201%204-1v-4h1l2-1c3%201%207-1%206-2h-4m-77%2044v3h-2l1%202-1%201c-2%201-2%201%202%201%203%200%204%200%203%201s-1%201%202%201c2%201%202%201-1%201s-4%200-3-1l-1-1c-3%200-1%203%202%203s3%200%201%201c-4%200-4%202%200%202l3%201h-1l-3%201c-2%200%201%202%205%202%203%200%203%200%202%201h-4l-1%201c2%202%208%201%207-2h1c1%201%201%201%201-1l-2-2v1l-1%201-1-1-1-1-1-1%202-1-1-1-2-1h2c2%200%203%201%203%202%201%201%201%200%201-2%200-8-8-15-12-11m120%202c-2%204-2%207%201%205h1l-1%202%201%203%202%201h2v2l-1%201h1l1%201v1l1%202c0%202%203%206%204%205l-1-2v-10l-3-5c-2-3-3-4-5-3-2%200-2%200-2-2l2-2c1-4-2-2-3%201m45%2010l-3%201-5%203c-3%204-3%205%200%205%201%200%202%200%201%201h-3c-2%200-4%200-5%202-3%201-4%204-2%203h1l-2%201h-2v2l-2%201%203%201%202%201-3%201c-3%200-2%201%201%203%202%200%205%203%207%205%203%205%204%204%201-1-2-4-3-5%200-3h1v-2l3-1c2-2%204-2%204%201l1%201v-2l1-1c1%201%202%200%202-2l2-2%201-1h2l-1-2%202-4%204-2h1c1-1%200-3-1-2l-1-1c0-2-4-6-5-4%200%202-2%201-2-1l-1-2-2%201m27%2029a215%20215%200%20010%2029v26l1%2024a1301%201301%200%2000-1-79m-90-2v3h-1l-1%201c1%201%200%202-1%203v2l2-2h1l-1%202-1%202-1%204c-2%201-2%202%200%201s1%203-1%204h-3l1-1-1-2c-1-1-1%200-1%204l-1%205v6l1%202c0%203%202%207%203%207l1%204-1%204c-2%200%200%206%202%2011l2%205v-5l1-4%201%204%201%203v-2l1-4v-4c2-1%202-1%203%201l-1%202-1%202%201%201c1-1%201%206-1%2014%200%203%200%203%201%202s1-1%202%201c0%203%202%203%202-1%200-1%200-2-1-1l-1-1%201-2c1%200%202-1%201-2h-2c0-4%201-7%203-7v-1c-2%200-2%200-2-5l-2-4c-1-1-1-1%201-1s2-1%202-5a479%20479%200%2001-1-10h-2l-1-3v-3l-1-1-1-1-1-3%201-2%201-1v-5l-1-1%204-1c2%200%203%200%203-2h-6l-2%201c-1%203-2%204-2%201l1-5%202-4v-2c-2%200-2-5-1-6v-1c-1%200-2%201-2%203m-112%208a222%20222%200%2000-6%2017v5l-1%209c-2%203-2%203%200%203%204%201%205%206%2010%2036v3h22v-4c0-3%200-5%202-5l1-4%201-6c2-3%203-10%202-13l1-7c2-5-2-11-7-10-3%201-3%200-6-4l-3-6c0-2-4-7-6-7l-5-5-4-4-1%202m126%205v20l-1%206c-2-1%200%207%202%209h1l1-1v13c0%2013-1%2017-1%207s-2-6-2%205l-1%209h7v-6l1-20c0-18%200-19%203-20v2l1%2015v4l1%203v13c0%203%200%203%201%202s2-5%202-18v-18l1%203%201%204%201%202-1%202v1c2%201%203%200%203-8v-7c-1%201-3%200-5-1-4-2-4-2-2-3%201-1%201-1-1-1l-3-1c-1-1-1-1-1%202v3l-1-1h-2l1-2v-3c-2-3-3-2-2%201%200%203%200%203-1%201l-1-10c0-7%200-9-2-7m45%2023l-1%2013v31h3c1%201%201%201%201-2l1-4c2%200%201-3%200-3-1-1-2-2-1-6v-12c0-3%200-3-1-2s-1-1-1-9v-11l-1%205m-23%207l1%206%201%207c0%205%200%206-1%204-1-3-1-3-1%202l-1%2016-1-2-1-2-1-8v-13c-2-2-2%202-2%2022l-2%203-2%201-1%201h-3c-1%201%204%201%2012%201h14v-10a178%20178%200%20010-16l-1-8%201-9h-4l-6-1c-2%200-2%200-2%206m-77%2030l-7%201c3%200%204%200%203%201l-1%206c2%200%203-2%203-5l1-2%201%204c0%203%200%203%201%202l1-3c0-2%202-3%202-1h1v2c0%203%201%204%204%201%203-2%2025-2%2030%200s6%202%206%200c0-3-1-3-13-5-10-2-14-2-32-1m32%2087v6l11%203%2013%204c2%200%203-3%201-5-2-1-3-9-1-7v2l1%202v-5l-1-1h2l1-1c0-3-2-3-3-2l-1%202-1-1-1-1-1%201h-2c-2-3-3-2-2%201%200%202%200%202-1%200s-5-4-5-2l-2%201c-1-1-1-1%200%200l1%204%201%205v1l-2-2-1-1-3-2h2c1%200%202%200%202-2s-5-5-5-3h-1c0-5-2-1-2%203'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVQ4y12UaXNTVRjH7/dwZBMZBFpKF9omzXqTm9zk3iQ3TTe6JiW0pWnLbdK0SVdW2RxAB1AcZRVklZZVQXyBjAu+EJlxnPHD/HxaHB198Z/nnOc85/+s5yh/vrzHk9tnWLx6ktPHi+wrDwiGeH9+hI+OTrIwtYvyeIaSnRZkyPYmabVC5Ecy7OxtIdPTQjbdQW4wTfeOFpQ/fr7HwxunufTxAcp2L12tIYazreyb3s2x/TYHZoYpjPQwPtzNXHEAe3c3me6kEPTQ0WJgRvzEDY1myyCkqSi/Pr/D0rUPuXHxA2YK/YT927FML13tEbJ9FqXxfk4dmeLYgQKlfFb0hhCoWPEQqs9BWPMIfCTiEWKxKMov393k+vnjXD53mE9OLWDnutA1B1HdTSTsImUFGcq2kx9LMyrRWfEg0YiPzo4kwaCHuBkmHosQDPgI6yGU1z/cZ+n6WW5ePsWlT49y8mgZI+qVSwKRhuHHNAPszLSRGxLCREig09PViqp6SFqmEPtxu5vw+/0or358wNeL53l893POntrH6LDUy97J4EAnBTtLMT9InxR/ZDjNSC5DPB4WR0Ha2iwh8ODzedAlsljcJGoaKC+fL/L0/hVOHJsVI5POzgRjY/0U8gOUp3JMl0Y5fnSeyeIIoyNZotIAf8Ajts14vC60UACf6kMLC6llLRMucf7ccUlLk0MfunQt1WISt8KYMU32Ku0dFplMJ7ncLqzmOAcPzMp6AEeTk4ihY8RMfIEgfi2M8uLZHR7cuUBHRwI16KavrwNdUopJnZzuBqpqKvCqLoZzWbIDGdKZHubmpzDjhuh9QqQSCGmEDZNkaxvKs0df8uCriySbI+JRRiZpiJF0Lxkl1WoJYSV1DTWk2pKUygUOHlrAo3rRDemspLlMpuk6uhlHi8ZQHt69xON7V2ltS+DxO3F5G1cI6hprUDU/9U5xkorT6HaQHexHDQdxSiMikmaj24VPC5BobhapU+/yoTxausJn505IUf3MzuZZ2DuF0yMDa4RodDnEiZuJSZtEyqJJurrdJU4lzVA0QpPPK9GqaJEoTq8q50GUpw9vUJoaY1PFRsrlcZ4+WaS9s1UiayDZkiRs6uzJj1KYmiBnj6JGdLnow0jEcAmhLxggKCkH9KjYJlC+eXSLCxfOUFG9hbbOFhbv3STZnsIjw2rJaHT0dNI/tIvCdImZ/XsJWwkahTAQ1al1OvBqQfREnFAsQTjRjHK4y+Twjii9tRsYbNrKQkpjt6eaIVcVdqCBsUA9tjzFouGlFPMz4Kom07CFrKOSntqNpOs3099YQdZZJWc1KHblKqadW5hzVTDvqVpZzza9wZy7kmnHJvJbV71B5dtMbFtDsXotxW1rmaxe98+6KPrlM6VQ+y6HTA8LWgOHEypHkgH2684V3RErwLxah121mnzNOxT+g3UUhLDwP71SbHiPQu16JrZvYKRyNbmKVStydOtqxqrWYtesZ9KxmQmxy9dtwBbbPaKz/8aemn/3y1J5fPeKfAxf8HjpGnvnJnE45HVUVZBqjpFOd9Pe1kJeujszPUWhYNOX7pU3LJ+C143TUU+TsxGvx4XL7cbt8aL8/tsLXr/6npc/fcut25epE6O31qxifGKU3J7cyuCmd+1kemGGydky+dIkQSOKXwZ8u4yWQ8jc6vIMqtQ6nPwFSIU8xj9I2YoAAAAASUVORK5CYII=","aspectRatio":1,"src":"/static/725d97828fb6c30617a3e305656acfc3/3ddd4/aicount_cover.png","srcSet":"/static/725d97828fb6c30617a3e305656acfc3/078a8/aicount_cover.png 163w,\n/static/725d97828fb6c30617a3e305656acfc3/e56da/aicount_cover.png 327w,\n/static/725d97828fb6c30617a3e305656acfc3/3ddd4/aicount_cover.png 653w,\n/static/725d97828fb6c30617a3e305656acfc3/c5cc7/aicount_cover.png 980w,\n/static/725d97828fb6c30617a3e305656acfc3/6050d/aicount_cover.png 1200w","srcWebp":"/static/725d97828fb6c30617a3e305656acfc3/0acdf/aicount_cover.webp","srcSetWebp":"/static/725d97828fb6c30617a3e305656acfc3/ac59e/aicount_cover.webp 163w,\n/static/725d97828fb6c30617a3e305656acfc3/7660b/aicount_cover.webp 327w,\n/static/725d97828fb6c30617a3e305656acfc3/0acdf/aicount_cover.webp 653w,\n/static/725d97828fb6c30617a3e305656acfc3/75470/aicount_cover.webp 980w,\n/static/725d97828fb6c30617a3e305656acfc3/9000d/aicount_cover.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M95%203c0%203%200%204-3%204s-10%206-9%207l-2%201h-2v2c-1%201-3%201-9-2l-10-3%208%204%209%204-1%204v4l10%205-6-2-6-1c-1%200%201%202%205%203l6%203-7-2-7-2%202%202-1%201c0%202-2%202-5%201a217%20217%200%2000-26-9v1l21%208%209%204v3c-1%204%202%2013%204%2013l1%202c0%202%200%202%201%201%200-2%200-2%203-1%202%201%202%202%201%204-1%205%203%2012%207%2015l5%204%203%202v-1c-3-2-2-3%201-3%202%200%202%200%201%202v1c3-1%204%207%201%2014-1%205-1%205-3%204-4-4-9%200-9%205%200%203%200%203-2%203-3%200-3%200-2%201h-1c-2%200-2%201-2%204h-2l1%202-5%203c-4%204-5%205-9%205-6%201-11%204-18%2011-6%206-15%2018-14%2019%200%202%205%206%208%207%202%201%203%201%202%204l1%207v6c-2%200-2%201-1%201%202%200%202%205%200%206-1%202-2%2016-1%2022%201%203-2%2020-4%2021-2%202-9%2019-7%2019v5c0%204%200%205%202%208%203%204%205%2010%206%2017l1%207v3H0v37l1%2037h62l2%204c1%203%202%204%204%204%205%200%207%203%206%2010-1%205-1%207%201%2010l2%204-2%203c-3%205-2%206%202%202l3-3v3l-1%203h50l2-12%203-20%202-7h4l3%201v15l-1%2014%203%204c2%205%206%207%207%204h1c0%202%203%201%204-1%200-2%202-2%202-1%200%202%203%203%2012%203h9l-2-3-3-6-2-9c0-4%200-6-1-5l-14%201-13%202h-1l1-2%2014-1c16-2%2024-1%2024%203h1c2-3%204%200%204%205v4h-3l-4-1v-1h-1l-3-1h2l1-1-1-1-2-2c-1-2-1-2-1%201%200%205%201%209%202%208l4-1c3%200%203%200%203%203%200%202%200%202-1%201-2-2-3-1-3%201h-1c-2-2-1%200%201%203%201%202%201%202%201%200%200-3%202-3%203%200%202%203%204%202%204-2l1-5%201%204v5h10l1-10a397%20397%200%20001-24c0-5%200-5%203-5h11c4%200%205%201%205%202l2%201%201-1c0-1%201-2%203-2h3v39l1-7c0-5%200-7%201-5%201%201%201%201%201-3l1-4%201%202v17l3-2c1-2%201-2%201%200s0%202%201%200l1-2v-1l1-7-1-4-2%202-2-1v-3c0-2%200-2%201%200s1%201%201-3c0-3%200-3%201-1%201%201%201%202%203%201v-1c-1-1-1-5%201-6v-4l1-4%201%202%202%202%201-2%201-4c1-1%202%201%202%208s-1%209-2%209l-1-1-1-2c-2-1-2-1-2%203%200%202%201%203%202%203l1%201-1%201c-2%200-2%209-1%2010l1-1c-1-4%200-6%202-6l1-1c0-2%202-1%203%202v4l-1%201h1l1%202v2l1%201c0%202%205%202%207%201h1l2%201c3%200%203-1%203-4l1-3v3c0%203%200%204%202%204h3v-31l1%2015v16h17v-10l1-9v19h10l10-1c-2-1-2-6-1-7l1%203c0%205%201%205%209%205h7v-4c0-4%201-5%201-1s2%207%203%204h2c2%200%202%200%201-1-2%200-2-1-1-1%202-1%201-3-1-3-1-1%200-1%201-1l3%202c0%205%200%205%206%205%205%200%206%200%205-2h1l3%201h2c0%202%203%201%203-1l-2-2v-1c0-2%203-1%203%201h1c0-3%202-1%202%201s0%203%207%203l7-1%201-1%201%201c-1%201%201%201%205%201l6-1c-1-1%200-1%202-1l1%201c-1%201%200%201%202%201h3v-6l-1-6v-5l2-49a294%20294%200%2000-2-49h-1l-1%201%201-3c3-4%203-6%200-6-2%200-3-1-1-2h1l1%201%201-2h-1v-3c1-1%201-1-1-1l-2%201%202-2c3-2%202-8-1-7-2%201-1-1%201-4s3-14%201-12l-1-1v-2c2%200%202-4%202-28v-27h-2l-2-1h2c2-1%203-3%200-3v-1l2-4-2-5v-1c2%200%202-2%202-26%200-15%200-26-1-25l-1%202%201-5V92a307%20307%200%20000-56l1-18V1l-5-1-4%201c1%201%200%202-1%203-2%201-2%201-2-1s0-3-2-3l-2%201c2%202%200%203-2%201s-3%200-3%204c0%203-1%204-2%204-2%200-2%200-1-3%202-4%201-4-6-3l-8%202c-2%201-3%201-2%204%200%204%204%208%205%207l1%204c0%202%200%203-1%202-1-4-5-8-6-7v-2c1-7%200-7-13-3l-10%203-1%201v2c2%200%203%203%201%205-2%201-4-2-3-5s1-3-1-3a35696%2035696%200%2001-18%207v3c-2%201-2%201-1-1%200-2%200-2-1-1v-1l-1-1-4%201v1l1%203h-2v-2c0-2-3-1-18%204l-1%202%201%203v2h-4l2-4-1-1h-1l-2-1v1c2%201%200%207-2%207h-1v-2l-1-2v-2h-2l-1%204-1%204v-8l-7%202-8%203h-1l-7%202a531%20531%200%2001-22%207l-1%201v-1l-2-1-6%202-5%203%201%201c1-1%201%200%201%201l-2%204v2c3%202%201%209-4%2016-1%201-2-3-1-5l-1-3v-2c0-3-1-5-2-2-1%201-1%200-1-4v-5l3%201c4%203%205%202%204-1%200-2%200-2%201%200l1%201c0-4-1-5-5-4l-2%201h-3c-5-1-8-6-4-6l1%202c-1%202%202%201%203-1l1-1c0%202%200%202%207%201%209-3%2011-4%2010-6h1c2%202%202%202%204%201h2l1-1h2V28l-1-1-1%201-2%203v1c3%200-1%202-4%202h-3v-2l-2-2c1-4%201-4%202-1%201%201%201%201%201-1l1-2v4l1%203%201-3c0-3%200-3%201-1s1%202%202-1l1-2%203-1c2-1%202-1%201-2v-2c2-1%202-1%201-2l-2-16-2-3c-1%200-2%205%200%206v7l-1%204-1-2v-1l1-3c0-2%200-2-1%200l-2%204c0%202-1%202-1%201-1-1%200-3%201-4V8l-1-3c0-4%200-5-2-5s-2%200-1%201c2%202%201%2020%200%2022v2h-2v-2c1%200%202-4%200-4V0h-7v5l-1%205V6l-1-5-1%203-1%203-1-1-1-6c-2%201-2%209%200%209l-1%201-1%209c0%2017%200%2016-2%2015v-1c1-1%201-12-1-13l-2-1%201%202v8l-1%206-1%204v-4l-1-4-2%203-2%207v4l-1-6V24l-1-15c0-6%200-8-1-6%200%202-1%202-1%201V1l-1-1-1%2015v15l-1-8-1-7v8l1%209v1c-2%201-2%208%200%2010l2%201h2v1c-2%200-2%200%200%202h5c2%200%202%200%201%201s-1%201%201%201h1v1h2v4l1%202%201-2v2l-1%208-1%201%201-5c0-3%200-3-1%200l-2%202-2-1v-1h-1c-2%200-2%200-1-1v-1h-1l-2-1h-3l-4-3c-4-3-8-4-9-3l-1%201v-4l-3-1%201%202c3%202%200%202-4%200-5-2-7-5-3-4%204%202%204%201%205-1%200-1%200-2-1-1%200%202-1%202-2%201-3-1-4-1-2-3v-2c-4%200-6%201-7%204s-1%203%200%200v-8c0-4-1-4-1%200l-1%203-3%206c-1%203-1%205-2%204l2-6%201-6-4%2014v1c-1-2-1-2-1%200l-2%203v1l2%201h-4v-2l1-2c-1-4%200-7%201-4%201%201%201%200%201-2v-1c1%201%201%201%201-1v-5c0-2%200-2%201%200%201%201%201%200%201-2v-2c0%202%201%202%201%201v-2l-1-2-1-1-1%201-3%206-3%208-3%203v1l1%201-1%201c-1-1-1%200%200%200%200%202%200%202-3%201l-1-2c2%200%209-16%209-20%201-4-1-2-3%202l-2%203%201-4%201-6c0-4-1-4%208%201l8%203%2011%205c16%207%2015%208%2014-3a310%20310%200%2001-1-23V7c2-3%200-7-3-7s-6%202-6%204v1l-1-2-1-2c-1%201-1%204%202%205l2%203c0%202%201%205%202%204l1%201-3%201c-1%200-2%200-1%201%201%200%200%206-2%206v-7c2-1%202-2%200-5-1-4-2-4-2-2-1%201-1-1-1-3%200-10-1-4-1%207l-1%2011-1%202v2l-1%201%201%201c1-1%201%200%201%201%200%202-1%202-9-2l-5-2-6-2c-6-4-7-4-6%200%200%202%200%202-2%201v1l1%203-3-2-2-2-1%203c-1%202-2%203-4%202l-2-4c-1-2-1-2-2%201l-1%202-1-2h-2l1%202h-1l-1%203-2%202v-4l2-9c1-6%201-6-2%205l-2%203-1%201h-1c-2-2-2-1-5%206l-3%208%203-12c4-12%205-16%203-20l-1-3c2%200%208%204%208%205h1l10%203%208%204-3-2-4-4c0-2%200-2-1-1%200%202%200%202-4%200s-4-2-4-8c0-7-1-8-1-2%200%205-1%206-2%204h-2l-1%201V2l-2-2c-3%200-3%200-3%203l1%204v1c-1%200-2-1-2-4-1-5-3-5-3-1l-1%203V3l-1-3c-1%200-2%203-2%207v3l-1-8c0-2-2-1-3%202s-1%203-1%201%200-3-1-2l-2-1c-1-3-3-2-3%201m143%207a129%20129%200%20000%2015v4h6l-3%201c-2%200-5%203-4%204l-1%202c-1%201-1%201%201%201l3-2h5l4-1v-7l1-7v14l6-2c16-4%2017-5%2018-8%200-2%200-3-2-3v-1c2-1%202-3%202-11V0h-8c-8%200-8%200-8%202v3l-1-3c-1-3-6-3-6%200-1%202-1%202-1%200s-1-2-4-2c-4%200-5%201-5%202l2%201%201%201v4c-1%200-4-4-4-7l-1-1-1%2010m37-1c0%209%200%2010%202%2010v1c-2%200-3%207-1%207%203%200%205-3%203-4v-4c-1-1%200-1%201-1%202%200%202%201%202%204v4l2-3c2-3%203-5%201-3l-1-1c0-1%202-3%204-3h1c-3%202-2%208%201%207l4-2c8-1%2013-3%2013-6%200-2-1-2-2-1h-1l4-2v4c0%202%201%203%202%203v-4l1-4v-1c-1-1-1-1%201-1l2%202v2l1%203h2l2-1c5%200%2010-1%209-2v-2c3%200%203-4%200-3V7c2-2%204-2%204%201v3c1%202%203-1%203-4l1-4%201%203%202%204c2%201%208-1%209-3l2-4%201-3h-9l-10%201-3%201c-1%200-2%200-1-1l-4-1c-2%200-3%200-2%201%201%200%200%202-2%202V2l-6-2c-2%201-2%201%200%202%202%202%201%205-2%205l-1-4V0h-18v3l-1%203-1-3c0-3-3-4-5-1v1c1-1%202%200%202%201l-2%201c-2%200-2%200-2-2V0l-2%204-2%202V5l-1-2-1-1-1-2c-2%200-2%202-2%209M92%209l-2%201-2%201v1l1%201h1v2c-3%201-2%202%203%203%206%203%209%202%209-2v-3l1%203%201%202h2l2-1c1-1%201-1%201%202%200%202%200%202%201%200%201-3-1-8-2-6h-1c-1-1-4-3-12-4h-3m136%2051c0%202%200%202-1%201s-2%200-2%204%201%205%202%203a295%20295%200%2001-1%2049V89l-1%206-1%2012%201%207v1l-1%2012-1%2013-1%203-1%204v-6l1-6%201-1-1-1-1-1c-1-2-1-3%201-3l1-2c0-2%200-2-1-1l-1%202c-1%200-1-3%201-4v-3c-1-2-2-3-1-4a345%20345%200%2000-2%2044c1%201%202%201%202-1%201-3%201-1%201%204l1%207v2l1%203v5c0%206%201%202%202-8v-12l-1-3c-1-2-1-3%201-3l3-1-1-1-2-1h-1l-1-1v-2l-1-1h1l1-7%201-7%201%206v6h2l1-1v-4l-2-2c0-2%200-2%201-1l1%201-1-2v-2c1%200%201-4-1-5-1-1-1-1-1%201s0%202-1%200v-5l1-1c1-1%201%200%201%202l1%202a305%20305%200%2000-1-69m64%2011v6a79695%2079695%200%20010-6m-17%2043v34l-9%202c-11%202-12%203-12%205l5%201%204-1-3%203-3%204h2l3%201h-3c-5%200-5%203%200%205%203%201%204%201%203%202-2%202-1%203%201%203%201%201%202%201%201%202v3l-1%202v3c0%202%200%202%202%200l1-3%201-2c1%200%201-1-1-1v-2c2%200%208-8%208-10v-2l1-4c0-1%200-2%201-1%202%200%205-3%205-6l1-2c1%200%200%208-2%2010v2l2%205c-1%202%200%203%201%203v-9l1-2c0-1%201-2%203-1%202%200%202%200%202-2l-1-3v-1c2-1%202-24%200-25l-1%203-1%203-2%201%202%201c2%200%202%201%201%204l-2%204-1-1c0-2-2-3-2-1%201%204-2%207-5%207l-1-34a388%20388%200%2000-1%200M164%2098l-1%203c-1-1-1%200-1%202l1%203%201%203-1%201v7l-1-1-1-1v1c1%202%201%202-1%202-1%201%200%201%202%201s3%200%203-2h1c0%202%202%201%202-1%201-1%201-1%201%201s2%203%203%201h1l2%201v-7l1-1-2-1v-4l1%201c1%202%201%202%201-1s0-3-1-2c-2%202-3%201-3-2l-1-4-1%201-1%201h-2l1%201%201%204v4l-1-4c0-2-1-3-1-1h-1v-6l-1-1c-1-1-1%200-1%201m-71%2012c-5%201-4%201%205%201h10l-11%201c-12%201-16%202-7%202l8%202v2l7%203h-4c-7%200-11%200-10%201l3%202%205%201%207%202c2%201%204%201%204-2l1-1%201-1c-1-1%200-1%201-1l1%202-6%2016c0%201%201%201%201-1l2-2v-1c0-2%206-16%2010-19%202-3%205-4%205-2h2v-1l-1-2c1-1-2-2-3-1h-7c-6-1-19-2-24-1m35%208c-1%202%200%205%201%206h-2c-3%200-4%200-3%201l7%201%201-2c2-1%202-1%202%202l-1%201-4%205c-1%203-3%206-2%207l-3%201h1c4%202%207%202%207%201v-1l1-3-1%201c-2%202-5%200-3-3%201-2%203-3%204-1l4-5c5-7%206-8%205-4%200%203%200%203%201%202%202-1%203%200%202%202l3-2%202-3v-1l2-1h2c5%200%206-2%201-3h-4l-1-1-4-1h-7c-8-2-9-2-11%201m38%203l3%201-2%202c-2%200-2%201-2%202l-3%201c-2%200-3%200-1%201%203%201%2014%206%2013%207h-1l-1%201c0%202%203%201%204%200%201-2%203-3%203-1-1%201%202%203%203%203l1-3h2l2%201-2%201-2%201%202%202h5c-1%202%200%202%202%202v1l1%201-2%204c-3%202-1%203%202%200h4l2%201-1-1c-2-1-2-2%201-4l3-2h7l5-1-4-4c-5-4-9-5-10-3l-1%203v1l-1-1s-1-2-3-2l-2-2%203-1h4c2%200%200-2-3-3-3-2-9-3-9-1s0%202-3%201c-4-2-4-3%201-3h5l-4-2-9-1c-7%200-9-1-4-2%202-1%200-1-4-1-6%200-6%200-4%201m-6%201l-4%201c-3%200-9%206-12%2013-4%206-5%2011-4%2011l1-1%201-1%203-1c1-3%202-1%201%202l1%202%201-1v-2c1-3%200-7-2-7s-1-1%201-5c2-3%203-4%204-3%202%201%203%201%204-1v-4h1l2-1c3%201%207-1%206-2h-4m-77%2044v3h-2l1%202-1%201c-2%201-2%201%202%201%203%200%204%200%203%201s-1%201%202%201c2%201%202%201-1%201s-4%200-3-1l-1-1c-3%200-1%203%202%203s3%200%201%201c-4%200-4%202%200%202l3%201h-1l-3%201c-2%200%201%202%205%202%203%200%203%200%202%201h-4l-1%201c2%202%208%201%207-2h1c1%201%201%201%201-1l-2-2v1l-1%201-1-1-1-1-1-1%202-1-1-1-2-1h2c2%200%203%201%203%202%201%201%201%200%201-2%200-8-8-15-12-11m120%202c-2%204-2%207%201%205h1l-1%202%201%203%202%201h2v2l-1%201h1l1%201v1l1%202c0%202%203%206%204%205l-1-2v-10l-3-5c-2-3-3-4-5-3-2%200-2%200-2-2l2-2c1-4-2-2-3%201m45%2010l-3%201-5%203c-3%204-3%205%200%205%201%200%202%200%201%201h-3c-2%200-4%200-5%202-3%201-4%204-2%203h1l-2%201h-2v2l-2%201%203%201%202%201-3%201c-3%200-2%201%201%203%202%200%205%203%207%205%203%205%204%204%201-1-2-4-3-5%200-3h1v-2l3-1c2-2%204-2%204%201l1%201v-2l1-1c1%201%202%200%202-2l2-2%201-1h2l-1-2%202-4%204-2h1c1-1%200-3-1-2l-1-1c0-2-4-6-5-4%200%202-2%201-2-1l-1-2-2%201m27%2029a215%20215%200%20010%2029v26l1%2024a1301%201301%200%2000-1-79m-90-2v3h-1l-1%201c1%201%200%202-1%203v2l2-2h1l-1%202-1%202-1%204c-2%201-2%202%200%201s1%203-1%204h-3l1-1-1-2c-1-1-1%200-1%204l-1%205v6l1%202c0%203%202%207%203%207l1%204-1%204c-2%200%200%206%202%2011l2%205v-5l1-4%201%204%201%203v-2l1-4v-4c2-1%202-1%203%201l-1%202-1%202%201%201c1-1%201%206-1%2014%200%203%200%203%201%202s1-1%202%201c0%203%202%203%202-1%200-1%200-2-1-1l-1-1%201-2c1%200%202-1%201-2h-2c0-4%201-7%203-7v-1c-2%200-2%200-2-5l-2-4c-1-1-1-1%201-1s2-1%202-5a479%20479%200%2001-1-10h-2l-1-3v-3l-1-1-1-1-1-3%201-2%201-1v-5l-1-1%204-1c2%200%203%200%203-2h-6l-2%201c-1%203-2%204-2%201l1-5%202-4v-2c-2%200-2-5-1-6v-1c-1%200-2%201-2%203m-112%208a222%20222%200%2000-6%2017v5l-1%209c-2%203-2%203%200%203%204%201%205%206%2010%2036v3h22v-4c0-3%200-5%202-5l1-4%201-6c2-3%203-10%202-13l1-7c2-5-2-11-7-10-3%201-3%200-6-4l-3-6c0-2-4-7-6-7l-5-5-4-4-1%202m126%205v20l-1%206c-2-1%200%207%202%209h1l1-1v13c0%2013-1%2017-1%207s-2-6-2%205l-1%209h7v-6l1-20c0-18%200-19%203-20v2l1%2015v4l1%203v13c0%203%200%203%201%202s2-5%202-18v-18l1%203%201%204%201%202-1%202v1c2%201%203%200%203-8v-7c-1%201-3%200-5-1-4-2-4-2-2-3%201-1%201-1-1-1l-3-1c-1-1-1-1-1%202v3l-1-1h-2l1-2v-3c-2-3-3-2-2%201%200%203%200%203-1%201l-1-10c0-7%200-9-2-7m45%2023l-1%2013v31h3c1%201%201%201%201-2l1-4c2%200%201-3%200-3-1-1-2-2-1-6v-12c0-3%200-3-1-2s-1-1-1-9v-11l-1%205m-23%207l1%206%201%207c0%205%200%206-1%204-1-3-1-3-1%202l-1%2016-1-2-1-2-1-8v-13c-2-2-2%202-2%2022l-2%203-2%201-1%201h-3c-1%201%204%201%2012%201h14v-10a178%20178%200%20010-16l-1-8%201-9h-4l-6-1c-2%200-2%200-2%206m-77%2030l-7%201c3%200%204%200%203%201l-1%206c2%200%203-2%203-5l1-2%201%204c0%203%200%203%201%202l1-3c0-2%202-3%202-1h1v2c0%203%201%204%204%201%203-2%2025-2%2030%200s6%202%206%200c0-3-1-3-13-5-10-2-14-2-32-1m32%2087v6l11%203%2013%204c2%200%203-3%201-5-2-1-3-9-1-7v2l1%202v-5l-1-1h2l1-1c0-3-2-3-3-2l-1%202-1-1-1-1-1%201h-2c-2-3-3-2-2%201%200%202%200%202-1%200s-5-4-5-2l-2%201c-1-1-1-1%200%200l1%204%201%205v1l-2-2-1-1-3-2h2c1%200%202%200%202-2s-5-5-5-3h-1c0-5-2-1-2%203'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVQ4y12UaXNTVRjH7/dwZBMZBFpKF9omzXqTm9zk3iQ3TTe6JiW0pWnLbdK0SVdW2RxAB1AcZRVklZZVQXyBjAu+EJlxnPHD/HxaHB198Z/nnOc85/+s5yh/vrzHk9tnWLx6ktPHi+wrDwiGeH9+hI+OTrIwtYvyeIaSnRZkyPYmabVC5Ecy7OxtIdPTQjbdQW4wTfeOFpQ/fr7HwxunufTxAcp2L12tIYazreyb3s2x/TYHZoYpjPQwPtzNXHEAe3c3me6kEPTQ0WJgRvzEDY1myyCkqSi/Pr/D0rUPuXHxA2YK/YT927FML13tEbJ9FqXxfk4dmeLYgQKlfFb0hhCoWPEQqs9BWPMIfCTiEWKxKMov393k+vnjXD53mE9OLWDnutA1B1HdTSTsImUFGcq2kx9LMyrRWfEg0YiPzo4kwaCHuBkmHosQDPgI6yGU1z/cZ+n6WW5ePsWlT49y8mgZI+qVSwKRhuHHNAPszLSRGxLCREig09PViqp6SFqmEPtxu5vw+/0or358wNeL53l893POntrH6LDUy97J4EAnBTtLMT9InxR/ZDjNSC5DPB4WR0Ha2iwh8ODzedAlsljcJGoaKC+fL/L0/hVOHJsVI5POzgRjY/0U8gOUp3JMl0Y5fnSeyeIIoyNZotIAf8Ajts14vC60UACf6kMLC6llLRMucf7ccUlLk0MfunQt1WISt8KYMU32Ku0dFplMJ7ncLqzmOAcPzMp6AEeTk4ihY8RMfIEgfi2M8uLZHR7cuUBHRwI16KavrwNdUopJnZzuBqpqKvCqLoZzWbIDGdKZHubmpzDjhuh9QqQSCGmEDZNkaxvKs0df8uCriySbI+JRRiZpiJF0Lxkl1WoJYSV1DTWk2pKUygUOHlrAo3rRDemspLlMpuk6uhlHi8ZQHt69xON7V2ltS+DxO3F5G1cI6hprUDU/9U5xkorT6HaQHexHDQdxSiMikmaj24VPC5BobhapU+/yoTxausJn505IUf3MzuZZ2DuF0yMDa4RodDnEiZuJSZtEyqJJurrdJU4lzVA0QpPPK9GqaJEoTq8q50GUpw9vUJoaY1PFRsrlcZ4+WaS9s1UiayDZkiRs6uzJj1KYmiBnj6JGdLnow0jEcAmhLxggKCkH9KjYJlC+eXSLCxfOUFG9hbbOFhbv3STZnsIjw2rJaHT0dNI/tIvCdImZ/XsJWwkahTAQ1al1OvBqQfREnFAsQTjRjHK4y+Twjii9tRsYbNrKQkpjt6eaIVcVdqCBsUA9tjzFouGlFPMz4Kom07CFrKOSntqNpOs3099YQdZZJWc1KHblKqadW5hzVTDvqVpZzza9wZy7kmnHJvJbV71B5dtMbFtDsXotxW1rmaxe98+6KPrlM6VQ+y6HTA8LWgOHEypHkgH2684V3RErwLxah121mnzNOxT+g3UUhLDwP71SbHiPQu16JrZvYKRyNbmKVStydOtqxqrWYtesZ9KxmQmxy9dtwBbbPaKz/8aemn/3y1J5fPeKfAxf8HjpGnvnJnE45HVUVZBqjpFOd9Pe1kJeujszPUWhYNOX7pU3LJ+C143TUU+TsxGvx4XL7cbt8aL8/tsLXr/6npc/fcut25epE6O31qxifGKU3J7cyuCmd+1kemGGydky+dIkQSOKXwZ8u4yWQ8jc6vIMqtQ6nPwFSIU8xj9I2YoAAAAASUVORK5CYII=","aspectRatio":1,"src":"/static/725d97828fb6c30617a3e305656acfc3/502b1/aicount_cover.png","srcSet":"/static/725d97828fb6c30617a3e305656acfc3/f2e6d/aicount_cover.png 114w,\n/static/725d97828fb6c30617a3e305656acfc3/4ddba/aicount_cover.png 229w,\n/static/725d97828fb6c30617a3e305656acfc3/502b1/aicount_cover.png 457w,\n/static/725d97828fb6c30617a3e305656acfc3/7ddc2/aicount_cover.png 686w,\n/static/725d97828fb6c30617a3e305656acfc3/435bf/aicount_cover.png 914w,\n/static/725d97828fb6c30617a3e305656acfc3/6050d/aicount_cover.png 1200w","srcWebp":"/static/725d97828fb6c30617a3e305656acfc3/15384/aicount_cover.webp","srcSetWebp":"/static/725d97828fb6c30617a3e305656acfc3/31fce/aicount_cover.webp 114w,\n/static/725d97828fb6c30617a3e305656acfc3/e3e25/aicount_cover.webp 229w,\n/static/725d97828fb6c30617a3e305656acfc3/15384/aicount_cover.webp 457w,\n/static/725d97828fb6c30617a3e305656acfc3/0258d/aicount_cover.webp 686w,\n/static/725d97828fb6c30617a3e305656acfc3/64ea2/aicount_cover.webp 914w,\n/static/725d97828fb6c30617a3e305656acfc3/9000d/aicount_cover.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M95%203c0%203%200%204-3%204s-10%206-9%207l-2%201h-2v2c-1%201-3%201-9-2l-10-3%208%204%209%204-1%204v4l10%205-6-2-6-1c-1%200%201%202%205%203l6%203-7-2-7-2%202%202-1%201c0%202-2%202-5%201a217%20217%200%2000-26-9v1l21%208%209%204v3c-1%204%202%2013%204%2013l1%202c0%202%200%202%201%201%200-2%200-2%203-1%202%201%202%202%201%204-1%205%203%2012%207%2015l5%204%203%202v-1c-3-2-2-3%201-3%202%200%202%200%201%202v1c3-1%204%207%201%2014-1%205-1%205-3%204-4-4-9%200-9%205%200%203%200%203-2%203-3%200-3%200-2%201h-1c-2%200-2%201-2%204h-2l1%202-5%203c-4%204-5%205-9%205-6%201-11%204-18%2011-6%206-15%2018-14%2019%200%202%205%206%208%207%202%201%203%201%202%204l1%207v6c-2%200-2%201-1%201%202%200%202%205%200%206-1%202-2%2016-1%2022%201%203-2%2020-4%2021-2%202-9%2019-7%2019v5c0%204%200%205%202%208%203%204%205%2010%206%2017l1%207v3H0v37l1%2037h62l2%204c1%203%202%204%204%204%205%200%207%203%206%2010-1%205-1%207%201%2010l2%204-2%203c-3%205-2%206%202%202l3-3v3l-1%203h50l2-12%203-20%202-7h4l3%201v15l-1%2014%203%204c2%205%206%207%207%204h1c0%202%203%201%204-1%200-2%202-2%202-1%200%202%203%203%2012%203h9l-2-3-3-6-2-9c0-4%200-6-1-5l-14%201-13%202h-1l1-2%2014-1c16-2%2024-1%2024%203h1c2-3%204%200%204%205v4h-3l-4-1v-1h-1l-3-1h2l1-1-1-1-2-2c-1-2-1-2-1%201%200%205%201%209%202%208l4-1c3%200%203%200%203%203%200%202%200%202-1%201-2-2-3-1-3%201h-1c-2-2-1%200%201%203%201%202%201%202%201%200%200-3%202-3%203%200%202%203%204%202%204-2l1-5%201%204v5h10l1-10a397%20397%200%20001-24c0-5%200-5%203-5h11c4%200%205%201%205%202l2%201%201-1c0-1%201-2%203-2h3v39l1-7c0-5%200-7%201-5%201%201%201%201%201-3l1-4%201%202v17l3-2c1-2%201-2%201%200s0%202%201%200l1-2v-1l1-7-1-4-2%202-2-1v-3c0-2%200-2%201%200s1%201%201-3c0-3%200-3%201-1%201%201%201%202%203%201v-1c-1-1-1-5%201-6v-4l1-4%201%202%202%202%201-2%201-4c1-1%202%201%202%208s-1%209-2%209l-1-1-1-2c-2-1-2-1-2%203%200%202%201%203%202%203l1%201-1%201c-2%200-2%209-1%2010l1-1c-1-4%200-6%202-6l1-1c0-2%202-1%203%202v4l-1%201h1l1%202v2l1%201c0%202%205%202%207%201h1l2%201c3%200%203-1%203-4l1-3v3c0%203%200%204%202%204h3v-31l1%2015v16h17v-10l1-9v19h10l10-1c-2-1-2-6-1-7l1%203c0%205%201%205%209%205h7v-4c0-4%201-5%201-1s2%207%203%204h2c2%200%202%200%201-1-2%200-2-1-1-1%202-1%201-3-1-3-1-1%200-1%201-1l3%202c0%205%200%205%206%205%205%200%206%200%205-2h1l3%201h2c0%202%203%201%203-1l-2-2v-1c0-2%203-1%203%201h1c0-3%202-1%202%201s0%203%207%203l7-1%201-1%201%201c-1%201%201%201%205%201l6-1c-1-1%200-1%202-1l1%201c-1%201%200%201%202%201h3v-6l-1-6v-5l2-49a294%20294%200%2000-2-49h-1l-1%201%201-3c3-4%203-6%200-6-2%200-3-1-1-2h1l1%201%201-2h-1v-3c1-1%201-1-1-1l-2%201%202-2c3-2%202-8-1-7-2%201-1-1%201-4s3-14%201-12l-1-1v-2c2%200%202-4%202-28v-27h-2l-2-1h2c2-1%203-3%200-3v-1l2-4-2-5v-1c2%200%202-2%202-26%200-15%200-26-1-25l-1%202%201-5V92a307%20307%200%20000-56l1-18V1l-5-1-4%201c1%201%200%202-1%203-2%201-2%201-2-1s0-3-2-3l-2%201c2%202%200%203-2%201s-3%200-3%204c0%203-1%204-2%204-2%200-2%200-1-3%202-4%201-4-6-3l-8%202c-2%201-3%201-2%204%200%204%204%208%205%207l1%204c0%202%200%203-1%202-1-4-5-8-6-7v-2c1-7%200-7-13-3l-10%203-1%201v2c2%200%203%203%201%205-2%201-4-2-3-5s1-3-1-3a35696%2035696%200%2001-18%207v3c-2%201-2%201-1-1%200-2%200-2-1-1v-1l-1-1-4%201v1l1%203h-2v-2c0-2-3-1-18%204l-1%202%201%203v2h-4l2-4-1-1h-1l-2-1v1c2%201%200%207-2%207h-1v-2l-1-2v-2h-2l-1%204-1%204v-8l-7%202-8%203h-1l-7%202a531%20531%200%2001-22%207l-1%201v-1l-2-1-6%202-5%203%201%201c1-1%201%200%201%201l-2%204v2c3%202%201%209-4%2016-1%201-2-3-1-5l-1-3v-2c0-3-1-5-2-2-1%201-1%200-1-4v-5l3%201c4%203%205%202%204-1%200-2%200-2%201%200l1%201c0-4-1-5-5-4l-2%201h-3c-5-1-8-6-4-6l1%202c-1%202%202%201%203-1l1-1c0%202%200%202%207%201%209-3%2011-4%2010-6h1c2%202%202%202%204%201h2l1-1h2V28l-1-1-1%201-2%203v1c3%200-1%202-4%202h-3v-2l-2-2c1-4%201-4%202-1%201%201%201%201%201-1l1-2v4l1%203%201-3c0-3%200-3%201-1s1%202%202-1l1-2%203-1c2-1%202-1%201-2v-2c2-1%202-1%201-2l-2-16-2-3c-1%200-2%205%200%206v7l-1%204-1-2v-1l1-3c0-2%200-2-1%200l-2%204c0%202-1%202-1%201-1-1%200-3%201-4V8l-1-3c0-4%200-5-2-5s-2%200-1%201c2%202%201%2020%200%2022v2h-2v-2c1%200%202-4%200-4V0h-7v5l-1%205V6l-1-5-1%203-1%203-1-1-1-6c-2%201-2%209%200%209l-1%201-1%209c0%2017%200%2016-2%2015v-1c1-1%201-12-1-13l-2-1%201%202v8l-1%206-1%204v-4l-1-4-2%203-2%207v4l-1-6V24l-1-15c0-6%200-8-1-6%200%202-1%202-1%201V1l-1-1-1%2015v15l-1-8-1-7v8l1%209v1c-2%201-2%208%200%2010l2%201h2v1c-2%200-2%200%200%202h5c2%200%202%200%201%201s-1%201%201%201h1v1h2v4l1%202%201-2v2l-1%208-1%201%201-5c0-3%200-3-1%200l-2%202-2-1v-1h-1c-2%200-2%200-1-1v-1h-1l-2-1h-3l-4-3c-4-3-8-4-9-3l-1%201v-4l-3-1%201%202c3%202%200%202-4%200-5-2-7-5-3-4%204%202%204%201%205-1%200-1%200-2-1-1%200%202-1%202-2%201-3-1-4-1-2-3v-2c-4%200-6%201-7%204s-1%203%200%200v-8c0-4-1-4-1%200l-1%203-3%206c-1%203-1%205-2%204l2-6%201-6-4%2014v1c-1-2-1-2-1%200l-2%203v1l2%201h-4v-2l1-2c-1-4%200-7%201-4%201%201%201%200%201-2v-1c1%201%201%201%201-1v-5c0-2%200-2%201%200%201%201%201%200%201-2v-2c0%202%201%202%201%201v-2l-1-2-1-1-1%201-3%206-3%208-3%203v1l1%201-1%201c-1-1-1%200%200%200%200%202%200%202-3%201l-1-2c2%200%209-16%209-20%201-4-1-2-3%202l-2%203%201-4%201-6c0-4-1-4%208%201l8%203%2011%205c16%207%2015%208%2014-3a310%20310%200%2001-1-23V7c2-3%200-7-3-7s-6%202-6%204v1l-1-2-1-2c-1%201-1%204%202%205l2%203c0%202%201%205%202%204l1%201-3%201c-1%200-2%200-1%201%201%200%200%206-2%206v-7c2-1%202-2%200-5-1-4-2-4-2-2-1%201-1-1-1-3%200-10-1-4-1%207l-1%2011-1%202v2l-1%201%201%201c1-1%201%200%201%201%200%202-1%202-9-2l-5-2-6-2c-6-4-7-4-6%200%200%202%200%202-2%201v1l1%203-3-2-2-2-1%203c-1%202-2%203-4%202l-2-4c-1-2-1-2-2%201l-1%202-1-2h-2l1%202h-1l-1%203-2%202v-4l2-9c1-6%201-6-2%205l-2%203-1%201h-1c-2-2-2-1-5%206l-3%208%203-12c4-12%205-16%203-20l-1-3c2%200%208%204%208%205h1l10%203%208%204-3-2-4-4c0-2%200-2-1-1%200%202%200%202-4%200s-4-2-4-8c0-7-1-8-1-2%200%205-1%206-2%204h-2l-1%201V2l-2-2c-3%200-3%200-3%203l1%204v1c-1%200-2-1-2-4-1-5-3-5-3-1l-1%203V3l-1-3c-1%200-2%203-2%207v3l-1-8c0-2-2-1-3%202s-1%203-1%201%200-3-1-2l-2-1c-1-3-3-2-3%201m143%207a129%20129%200%20000%2015v4h6l-3%201c-2%200-5%203-4%204l-1%202c-1%201-1%201%201%201l3-2h5l4-1v-7l1-7v14l6-2c16-4%2017-5%2018-8%200-2%200-3-2-3v-1c2-1%202-3%202-11V0h-8c-8%200-8%200-8%202v3l-1-3c-1-3-6-3-6%200-1%202-1%202-1%200s-1-2-4-2c-4%200-5%201-5%202l2%201%201%201v4c-1%200-4-4-4-7l-1-1-1%2010m37-1c0%209%200%2010%202%2010v1c-2%200-3%207-1%207%203%200%205-3%203-4v-4c-1-1%200-1%201-1%202%200%202%201%202%204v4l2-3c2-3%203-5%201-3l-1-1c0-1%202-3%204-3h1c-3%202-2%208%201%207l4-2c8-1%2013-3%2013-6%200-2-1-2-2-1h-1l4-2v4c0%202%201%203%202%203v-4l1-4v-1c-1-1-1-1%201-1l2%202v2l1%203h2l2-1c5%200%2010-1%209-2v-2c3%200%203-4%200-3V7c2-2%204-2%204%201v3c1%202%203-1%203-4l1-4%201%203%202%204c2%201%208-1%209-3l2-4%201-3h-9l-10%201-3%201c-1%200-2%200-1-1l-4-1c-2%200-3%200-2%201%201%200%200%202-2%202V2l-6-2c-2%201-2%201%200%202%202%202%201%205-2%205l-1-4V0h-18v3l-1%203-1-3c0-3-3-4-5-1v1c1-1%202%200%202%201l-2%201c-2%200-2%200-2-2V0l-2%204-2%202V5l-1-2-1-1-1-2c-2%200-2%202-2%209M92%209l-2%201-2%201v1l1%201h1v2c-3%201-2%202%203%203%206%203%209%202%209-2v-3l1%203%201%202h2l2-1c1-1%201-1%201%202%200%202%200%202%201%200%201-3-1-8-2-6h-1c-1-1-4-3-12-4h-3m136%2051c0%202%200%202-1%201s-2%200-2%204%201%205%202%203a295%20295%200%2001-1%2049V89l-1%206-1%2012%201%207v1l-1%2012-1%2013-1%203-1%204v-6l1-6%201-1-1-1-1-1c-1-2-1-3%201-3l1-2c0-2%200-2-1-1l-1%202c-1%200-1-3%201-4v-3c-1-2-2-3-1-4a345%20345%200%2000-2%2044c1%201%202%201%202-1%201-3%201-1%201%204l1%207v2l1%203v5c0%206%201%202%202-8v-12l-1-3c-1-2-1-3%201-3l3-1-1-1-2-1h-1l-1-1v-2l-1-1h1l1-7%201-7%201%206v6h2l1-1v-4l-2-2c0-2%200-2%201-1l1%201-1-2v-2c1%200%201-4-1-5-1-1-1-1-1%201s0%202-1%200v-5l1-1c1-1%201%200%201%202l1%202a305%20305%200%2000-1-69m64%2011v6a79695%2079695%200%20010-6m-17%2043v34l-9%202c-11%202-12%203-12%205l5%201%204-1-3%203-3%204h2l3%201h-3c-5%200-5%203%200%205%203%201%204%201%203%202-2%202-1%203%201%203%201%201%202%201%201%202v3l-1%202v3c0%202%200%202%202%200l1-3%201-2c1%200%201-1-1-1v-2c2%200%208-8%208-10v-2l1-4c0-1%200-2%201-1%202%200%205-3%205-6l1-2c1%200%200%208-2%2010v2l2%205c-1%202%200%203%201%203v-9l1-2c0-1%201-2%203-1%202%200%202%200%202-2l-1-3v-1c2-1%202-24%200-25l-1%203-1%203-2%201%202%201c2%200%202%201%201%204l-2%204-1-1c0-2-2-3-2-1%201%204-2%207-5%207l-1-34a388%20388%200%2000-1%200M164%2098l-1%203c-1-1-1%200-1%202l1%203%201%203-1%201v7l-1-1-1-1v1c1%202%201%202-1%202-1%201%200%201%202%201s3%200%203-2h1c0%202%202%201%202-1%201-1%201-1%201%201s2%203%203%201h1l2%201v-7l1-1-2-1v-4l1%201c1%202%201%202%201-1s0-3-1-2c-2%202-3%201-3-2l-1-4-1%201-1%201h-2l1%201%201%204v4l-1-4c0-2-1-3-1-1h-1v-6l-1-1c-1-1-1%200-1%201m-71%2012c-5%201-4%201%205%201h10l-11%201c-12%201-16%202-7%202l8%202v2l7%203h-4c-7%200-11%200-10%201l3%202%205%201%207%202c2%201%204%201%204-2l1-1%201-1c-1-1%200-1%201-1l1%202-6%2016c0%201%201%201%201-1l2-2v-1c0-2%206-16%2010-19%202-3%205-4%205-2h2v-1l-1-2c1-1-2-2-3-1h-7c-6-1-19-2-24-1m35%208c-1%202%200%205%201%206h-2c-3%200-4%200-3%201l7%201%201-2c2-1%202-1%202%202l-1%201-4%205c-1%203-3%206-2%207l-3%201h1c4%202%207%202%207%201v-1l1-3-1%201c-2%202-5%200-3-3%201-2%203-3%204-1l4-5c5-7%206-8%205-4%200%203%200%203%201%202%202-1%203%200%202%202l3-2%202-3v-1l2-1h2c5%200%206-2%201-3h-4l-1-1-4-1h-7c-8-2-9-2-11%201m38%203l3%201-2%202c-2%200-2%201-2%202l-3%201c-2%200-3%200-1%201%203%201%2014%206%2013%207h-1l-1%201c0%202%203%201%204%200%201-2%203-3%203-1-1%201%202%203%203%203l1-3h2l2%201-2%201-2%201%202%202h5c-1%202%200%202%202%202v1l1%201-2%204c-3%202-1%203%202%200h4l2%201-1-1c-2-1-2-2%201-4l3-2h7l5-1-4-4c-5-4-9-5-10-3l-1%203v1l-1-1s-1-2-3-2l-2-2%203-1h4c2%200%200-2-3-3-3-2-9-3-9-1s0%202-3%201c-4-2-4-3%201-3h5l-4-2-9-1c-7%200-9-1-4-2%202-1%200-1-4-1-6%200-6%200-4%201m-6%201l-4%201c-3%200-9%206-12%2013-4%206-5%2011-4%2011l1-1%201-1%203-1c1-3%202-1%201%202l1%202%201-1v-2c1-3%200-7-2-7s-1-1%201-5c2-3%203-4%204-3%202%201%203%201%204-1v-4h1l2-1c3%201%207-1%206-2h-4m-77%2044v3h-2l1%202-1%201c-2%201-2%201%202%201%203%200%204%200%203%201s-1%201%202%201c2%201%202%201-1%201s-4%200-3-1l-1-1c-3%200-1%203%202%203s3%200%201%201c-4%200-4%202%200%202l3%201h-1l-3%201c-2%200%201%202%205%202%203%200%203%200%202%201h-4l-1%201c2%202%208%201%207-2h1c1%201%201%201%201-1l-2-2v1l-1%201-1-1-1-1-1-1%202-1-1-1-2-1h2c2%200%203%201%203%202%201%201%201%200%201-2%200-8-8-15-12-11m120%202c-2%204-2%207%201%205h1l-1%202%201%203%202%201h2v2l-1%201h1l1%201v1l1%202c0%202%203%206%204%205l-1-2v-10l-3-5c-2-3-3-4-5-3-2%200-2%200-2-2l2-2c1-4-2-2-3%201m45%2010l-3%201-5%203c-3%204-3%205%200%205%201%200%202%200%201%201h-3c-2%200-4%200-5%202-3%201-4%204-2%203h1l-2%201h-2v2l-2%201%203%201%202%201-3%201c-3%200-2%201%201%203%202%200%205%203%207%205%203%205%204%204%201-1-2-4-3-5%200-3h1v-2l3-1c2-2%204-2%204%201l1%201v-2l1-1c1%201%202%200%202-2l2-2%201-1h2l-1-2%202-4%204-2h1c1-1%200-3-1-2l-1-1c0-2-4-6-5-4%200%202-2%201-2-1l-1-2-2%201m27%2029a215%20215%200%20010%2029v26l1%2024a1301%201301%200%2000-1-79m-90-2v3h-1l-1%201c1%201%200%202-1%203v2l2-2h1l-1%202-1%202-1%204c-2%201-2%202%200%201s1%203-1%204h-3l1-1-1-2c-1-1-1%200-1%204l-1%205v6l1%202c0%203%202%207%203%207l1%204-1%204c-2%200%200%206%202%2011l2%205v-5l1-4%201%204%201%203v-2l1-4v-4c2-1%202-1%203%201l-1%202-1%202%201%201c1-1%201%206-1%2014%200%203%200%203%201%202s1-1%202%201c0%203%202%203%202-1%200-1%200-2-1-1l-1-1%201-2c1%200%202-1%201-2h-2c0-4%201-7%203-7v-1c-2%200-2%200-2-5l-2-4c-1-1-1-1%201-1s2-1%202-5a479%20479%200%2001-1-10h-2l-1-3v-3l-1-1-1-1-1-3%201-2%201-1v-5l-1-1%204-1c2%200%203%200%203-2h-6l-2%201c-1%203-2%204-2%201l1-5%202-4v-2c-2%200-2-5-1-6v-1c-1%200-2%201-2%203m-112%208a222%20222%200%2000-6%2017v5l-1%209c-2%203-2%203%200%203%204%201%205%206%2010%2036v3h22v-4c0-3%200-5%202-5l1-4%201-6c2-3%203-10%202-13l1-7c2-5-2-11-7-10-3%201-3%200-6-4l-3-6c0-2-4-7-6-7l-5-5-4-4-1%202m126%205v20l-1%206c-2-1%200%207%202%209h1l1-1v13c0%2013-1%2017-1%207s-2-6-2%205l-1%209h7v-6l1-20c0-18%200-19%203-20v2l1%2015v4l1%203v13c0%203%200%203%201%202s2-5%202-18v-18l1%203%201%204%201%202-1%202v1c2%201%203%200%203-8v-7c-1%201-3%200-5-1-4-2-4-2-2-3%201-1%201-1-1-1l-3-1c-1-1-1-1-1%202v3l-1-1h-2l1-2v-3c-2-3-3-2-2%201%200%203%200%203-1%201l-1-10c0-7%200-9-2-7m45%2023l-1%2013v31h3c1%201%201%201%201-2l1-4c2%200%201-3%200-3-1-1-2-2-1-6v-12c0-3%200-3-1-2s-1-1-1-9v-11l-1%205m-23%207l1%206%201%207c0%205%200%206-1%204-1-3-1-3-1%202l-1%2016-1-2-1-2-1-8v-13c-2-2-2%202-2%2022l-2%203-2%201-1%201h-3c-1%201%204%201%2012%201h14v-10a178%20178%200%20010-16l-1-8%201-9h-4l-6-1c-2%200-2%200-2%206m-77%2030l-7%201c3%200%204%200%203%201l-1%206c2%200%203-2%203-5l1-2%201%204c0%203%200%203%201%202l1-3c0-2%202-3%202-1h1v2c0%203%201%204%204%201%203-2%2025-2%2030%200s6%202%206%200c0-3-1-3-13-5-10-2-14-2-32-1m32%2087v6l11%203%2013%204c2%200%203-3%201-5-2-1-3-9-1-7v2l1%202v-5l-1-1h2l1-1c0-3-2-3-3-2l-1%202-1-1-1-1-1%201h-2c-2-3-3-2-2%201%200%202%200%202-1%200s-5-4-5-2l-2%201c-1-1-1-1%200%200l1%204%201%205v1l-2-2-1-1-3-2h2c1%200%202%200%202-2s-5-5-5-3h-1c0-5-2-1-2%203'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/725d97828fb6c30617a3e305656acfc3/6050d/aicount_cover.png"}}},{"id":"02413450-9734-5da5-864e-d376af501252","slug":"/building-evolutionary-architectures","secret":false,"title":"Building Evolutionary Architectures","author":"Luke Celitan","date":"July 15th, 2026","dateForSEO":"2026-07-15T00:00:00.000Z","timeToRead":7,"excerpt":"Fitness Functions, Architectural Quanta, and How an Architect Finally Wins the Quality Argument Without Having It","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Building Evolutionary Architectures\",\n  \"excerpt\": \"Fitness Functions, Architectural Quanta, and How an Architect Finally Wins the Quality Argument Without Having It\",\n  \"date\": \"2026-07-15T00:00:00.000Z\",\n  \"hero\": \"evolutionaryArchitecture_cover.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"SoftwareEngineering\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"building-evolutionary-architectures-how-do-you-defend-quality-nobody-can-see\"\n  }, \"Building Evolutionary Architectures: How Do You Defend Quality Nobody Can See?\"), mdx(\"h2\", {\n    \"id\": \"introduction\"\n  }, \"Introduction\"), mdx(\"p\", null, \"Every architecture diagram I have ever drawn was wrong within six months. Not\\nbecause the diagram was bad, but because I drew it as if the system would hold\\nstill. It never does. New requirements land, a team gets reorged out from under\\nme, a vendor deprecates the API three services quietly depend on, and the\\n\\u201Cfinal\\u201D architecture turns out to have been the first draft of something that\\nhas to keep moving.\"), mdx(\"p\", null, \"As an engineering manager I\\u2019ve made peace with that part. The part I\\u2019ve spent\\nyears actually losing sleep over is different: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"architecture quality is\\ninvisible to the people who fund it.\"), \" The business doesn\\u2019t see coupling. It\\nsees features. It sees velocity. So when the pressure comes on \\u2014 and it always\\ncomes on \\u2014 the invisible stuff is the first thing sacrificed, because nobody in\\nthe room can point to a number that says it mattered. I\\u2019ve written before about\\nthe \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/the-rise-of-the-solo-dev-army\"\n  }, \"crucible of collaboration\"), \" and about the\\ntug-of-war between \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/mastering-agile-estimation\"\n  }, \"clean code and the business\"), \"\\nthat only wants the next feature. This post is about the missing tool in both of\\nthose fights.\"), mdx(\"p\", null, \"I found the name for that tool in \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Building Evolutionary Architectures\"), \" by Neal\\nFord, Rebecca Parsons, Patrick Kua, and Pramod Sadalage \\u2014 now in a second\\nedition that\\u2019s aged noticeably better than the 2017 original, because the\\ntooling finally caught up to the idea. But I don\\u2019t want to write you a book\\nreport. I want to tell you what the book unlocked for an argument I\\u2019d already\\nbeen having for years.\"), mdx(\"h2\", {\n    \"id\": \"the-real-problem-isnt-change--its-that-quality-cant-defend-itself\"\n  }, \"The Real Problem Isn\\u2019t Change \\u2014 It\\u2019s That Quality Can\\u2019t Defend Itself\"), mdx(\"p\", null, \"Here\\u2019s the thing nobody tells you in the architecture course. Architectures\\ndon\\u2019t calcify because architects are lazy or stupid. They calcify because there\\nis no forcing function keeping them honest.\"), mdx(\"p\", null, \"Think about how the rest of the pipeline evolved. We stopped hand-testing and\\nlet CI run on every commit. We stopped deploying on terrifying Saturday nights\\nand made it a Tuesday afternoon non-event. Code and deployment both learned to\\nmove fast and prove themselves automatically. Architecture never got that\\ntreatment. It stayed a PDF someone drew, a decision made once, and a \\u201Creview\\u201D\\nyou scheduled \\u2014 a meeting, not a check.\"), mdx(\"p\", null, \"So you get the split I see on almost every troubled project:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The pipeline ships in minutes, but every third release still needs a two-week\\narchitecture review, because the structure underneath it was never designed to\\nabsorb change \\u2014 and worse, nobody can \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"measure\"), \" whether it\\u2019s absorbing change\\nor slowly rotting.\")), mdx(\"p\", null, \"That gap \\u2014 fast code, slow architecture \\u2014 is the whole game. And it\\u2019s the same\\ngap I keep circling in the\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/mastering-agile-estimation\"\n  }, \"technical-debt conversation\"), \": your business\\noverlords don\\u2019t care about code, they care about features, and your mighty\\nvelocity is the only dial they watch. Technical debt is invisible until velocity\\ndrops off a cliff, and by then it\\u2019s a rewrite, not a fix. Architectural drift is\\nthe exact same trap, one level up.\"), mdx(\"h2\", {\n    \"id\": \"fitness-functions-making-the-invisible-go-red-in-ci\"\n  }, \"Fitness Functions: Making the Invisible Go Red in CI\"), mdx(\"p\", null, \"This is the idea I\\u2019d trade the rest of the book for.\"), mdx(\"p\", null, \"Ford and co. borrow the term \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"fitness function\"), \" from evolutionary computing and\\ndefine an architectural one as \\u201Cany mechanism that provides an objective\\nintegrity assessment of some architecture characteristic or combination of\\ncharacteristics.\\u201D Read past the phrasing and here\\u2019s what it actually is: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"a\\ncheck that makes an invisible quality visible enough to fail a build.\")), mdx(\"p\", null, \"If you\\u2019ve ever set a \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/mastering-agile-estimation\"\n  }, \"SonarQube quality gate\"), \" \\u2014\\nsay, \\u201Cfail the pipeline if code smells exceed 100 or duplication tops 5%\\u201D \\u2014 you\\nhave already written a fitness function. You just didn\\u2019t have the word for it.\\nThe book\\u2019s contribution is generalizing that instinct from code hygiene to\\n\", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"architecture\"), \": response-time budgets asserted in CI, ArchUnit tests that break\\nthe build when a module reaches into a layer it has no business touching, a\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/chaos-engineering\"\n  }, \"chaos-engineering experiment\"), \" that proves resilience under\\nfailure instead of hoping for it, a security scan that gates the deploy.\"), mdx(\"p\", null, \"Why does this matter so much to me as an EM? Because it ends the argument I\\nalways lose. I no longer have to walk into a room and \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"persuade\"), \" someone that\\ncoupling matters, that we shouldn\\u2019t let the reporting service call straight into\\nthe orders database. I don\\u2019t win that argument on charisma. The build goes red.\\nThe characteristic the team agreed mattered is now enforced by a machine that\\ndoesn\\u2019t attend the sprint review and can\\u2019t be talked out of it. That\\u2019s not a\\ntechnical upgrade \\u2014 it\\u2019s a political one.\"), mdx(\"p\", null, \"One nuance the book is right to hammer: measure the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"outcome\"), \", not the\\nimplementation. A fitness function is allowed to live in a monitoring dashboard,\\na DevOps tool, or a throwaway script in a language your app doesn\\u2019t even use.\\nYou\\u2019re asserting a property of the system, not writing production code.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Dimension\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Question It Answers\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Example\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Atomic vs. Holistic\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"One characteristic, or several fighting each other at once?\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"A single load test vs. a combined performance-and-security gate\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Triggered vs. Continual\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"On demand, or always running?\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"A manual pen test vs. a live monitoring alert\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Static vs. Dynamic\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Does the pass/fail line ever move?\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"A fixed uptime SLA vs. a threshold that adapts to load\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Automated vs. Manual\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Can a machine decide without me?\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"A CI suite vs. an architecture review board\")))), mdx(\"p\", null, \"The categories aren\\u2019t academic. The moment your team can say out loud \\u201Cthis gate\\nprotects coupling, that one protects latency,\\u201D you\\u2019re negotiating tradeoffs with\\nnames on the table instead of arguing from vibes. And I\\u2019ll take a named tradeoff\\nover a vibe every day of the week.\"), mdx(FitnessPipeline, {\n    mdxType: \"FitnessPipeline\"\n  }), mdx(\"h2\", {\n    \"id\": \"what-are-you-actually-protecting-quanta-and-coupling\"\n  }, \"What Are You Actually Protecting? Quanta and Coupling\"), mdx(\"p\", null, \"You can\\u2019t defend everything, so the book gives you units to defend.\"), mdx(\"p\", null, \"The first is the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"architectural quantum\"), \" \\u2014 the smallest thing you can\\nindependently deploy that still hangs together as a coherent whole, dependencies\\nand all (formally: independently deployable, highly cohesive, with its static\\nand synchronous runtime coupling bundled in). A monolith is, by definition,\\n\", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"one\"), \" quantum: touch anything and you\\u2019ve put everything\\u2019s deployment and test\\nsurface at risk. Break it into well-drawn\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/advanced-typescript-patterns-and-architectures\"\n  }, \"bounded contexts\"), \" and you get\\nmany small quanta, each free to evolve on its own clock \\u2014 the price being that\\nyou now have to manage contracts between them like an adult.\"), mdx(\"p\", null, \"The second is \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"coupling\"), \", and the book\\u2019s most useful move is splitting it in\\ntwo. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Static coupling\"), \" is how the pieces are wired at rest \\u2014 dependencies,\\nlibraries, contracts, the stuff your build graph already draws for you.\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Dynamic coupling\"), \" is how they actually talk at runtime, synchronously or\\nasynchronously \\u2014 the stuff your build graph never shows. This is exactly why a\\nservice can look pristine in a dependency diagram and still fall over in\\nproduction, because three services all silently assume the same undocumented\\nordering of synchronous calls that nothing anywhere declares.\"), mdx(CouplingGraph, {\n    mdxType: \"CouplingGraph\"\n  }), mdx(\"p\", null, \"To talk about that precisely, the authors dust off \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"connascence\"), \", a term\\nMeilir Page-Jones coined back in 1996: two components are connascent if changing\\none forces you to change the other to keep the system correct. The part I\\nactually put to work is the ranking. Prefer \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"static\"), \" connascence over \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"dynamic\"), \",\\nbecause you can find static coupling by reading source and kill it with\\nautomated refactoring, while dynamic coupling only introduces itself to you\\nduring an incident. When you find the strong stuff, refactor toward a weaker\\nform \\u2014 swap a magic value shared across modules for a single named constant and\\nyou\\u2019ve just traded connascence of meaning for connascence of name. That\\u2019s\\ncoupling made a decision instead of a surprise.\"), mdx(ConnascenceLadder, {\n    mdxType: \"ConnascenceLadder\"\n  }), mdx(\"h2\", {\n    \"id\": \"conways-law-is-not-optional-ask-any-manager\"\n  }, \"Conway\\u2019s Law Is Not Optional (Ask Any Manager)\"), mdx(\"p\", null, \"No book on evolvability escapes Conway\\u2019s Law, and as someone who spends half his\\nweek on team topology rather than code, I think it\\u2019s the most under-respected\\nforce in the whole discipline: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"your system will end up shaped like your org\\nchart whether you designed it that way or not.\")), mdx(\"p\", null, \"The naive read is \\u201Creorg the teams to match the architecture.\\u201D The real lesson\\nis humbler. Any evolutionary-architecture effort that ignores who talks to whom\\nis fighting a structural force it cannot out-design. I\\u2019ve watched a beautiful\\nservice boundary quietly dissolve because the two teams owning either side sat\\nin the same standup and just\\u2026 started reaching across it. The diagram didn\\u2019t\\nlose. The org chart won. It always does.\"), mdx(\"h2\", {\n    \"id\": \"the-solo-dev-army-needs-this-more-than-anyone\"\n  }, \"The Solo Dev Army Needs This More Than Anyone\"), mdx(\"p\", null, \"I argued in \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/the-rise-of-the-solo-dev-army\"\n  }, \"The Rise of the Solo Dev Army\"), \" that\\nAI tooling lets one developer do what used to take a team \\u2014 and that the thing\\nquietly lost in that trade is \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"constructive friction\"), \". Peer review, the raised\\neyebrow in the PR, the colleague who asks \\u201Cwait, why does this reach into that?\\u201D\\nThat friction is where a lot of architectural quality actually gets defended,\\nand a solo developer with an eager AICopilot generates code far faster than any\\nhuman reviewer can push back on it.\"), mdx(\"p\", null, \"Fitness functions are the most convincing answer I\\u2019ve found to my own argument.\\nA test that fails the build because a change violated a coupling rule doesn\\u2019t\\ncare whether a human or an agent wrote the change. It doesn\\u2019t get tired at 2\\na.m., it doesn\\u2019t defer to the person who seems confident, and it can\\u2019t be\\ncharmed. It\\u2019s automated, unglamorous friction \\u2014 and for AI-assisted development\\nit may be one of the only guardrails that scales as fast as the code generation\\ndoes. If AI removes the human who used to catch the bad architectural call, a\\nred build is how you put a facsimile of that human back into the loop.\"), mdx(\"h2\", {\n    \"id\": \"is-this-just-another-hype-train\"\n  }, \"Is This Just Another Hype Train?\"), mdx(\"p\", null, \"I\\u2019m constitutionally suspicious of methodology books, and regular readers know\\nI\\u2019ll happily \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/beware-of-the-hype-train\"\n  }, \"drag a hype train off its rails\"), \".\\n\\u201CEvolutionary architecture\\u201D has exactly the shape of a term that could become\\nconference-slide filler.\"), mdx(\"p\", null, \"What saves it is that its central idea is \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"testable\"), \", which is the precise\\nopposite of hype. A fitness function either goes green or it doesn\\u2019t. You can\\u2019t\\nfake it in a keynote. The failure modes I\\u2019ve lived through are just as concrete\\n\\u2014 here are the smells and their fixes, most of which I\\u2019ve had to apply the hard\\nway:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Symptom\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"What It Signals\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Fix\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Every change needs a full manual regression pass\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"No automated fitness functions\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Turn the manual checks into pipeline gates\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"One team must approve all cross-service changes\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Architecture and org are misaligned\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Revisit team topology against Conway\\u2019s Law\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\u201CWe don\\u2019t know what breaks if we change this\\u201D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Undocumented connascence\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Map it, name it, refactor toward a weaker form\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Every migration is a big-bang cutover night\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"No incremental change path\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Split it into independently deployable quanta\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Nobody wrote the important characteristics down\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"No shared definition of \\u201Cimportant\\u201D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Run a workshop and rank them, out loud\")))), mdx(\"p\", null, \"That last row is the one I\\u2019d tattoo on a wall. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"You cannot build a fitness\\nfunction for a quality nobody agreed mattered.\"), \" Naming the characteristics is\\nthe unglamorous prerequisite to protecting any of them \\u2014 and it\\u2019s the step every\\ncalcified architecture I\\u2019ve inherited skipped.\"), mdx(\"h2\", {\n    \"id\": \"final-thoughts\"\n  }, \"Final Thoughts\"), mdx(\"p\", null, \"Architecture that can\\u2019t change gracefully isn\\u2019t architecture. It\\u2019s the shape\\nyour system happened to have on the day everyone stopped paying attention. What\\n\", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Building Evolutionary Architectures\"), \" gave me wasn\\u2019t a new philosophy \\u2014 I\\nalready believed change was the default and quality was worth fighting for. It\\ngave me a way to stop \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"arguing\"), \" for quality and start \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"enforcing\"), \" it: pick your\\nquanta, name your coupling, agree on what matters, and wire each of those\\nbeliefs to a check that turns red when reality drifts away from them.\"), mdx(\"p\", null, \"The tools have only gotten sharper since 2017. Actually pointing them at the\\nqualities you claim to care about \\u2014 that\\u2019s still the hard part, and it\\u2019s still\\non us.\"), mdx(\"p\", null, \"This post was heavily inspired by\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.oreilly.com/library/view/building-evolutionary-architectures/9781492097532/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, mdx(\"em\", {\n    parentName: \"a\"\n  }, \"Building Evolutionary Architectures\"), \", 2nd Edition\"), \"\\nby Neal Ford, Rebecca Parsons, Patrick Kua, and Pramod Sadalage. I\\u2019ve stripped\\nit down to the argument I actually use, but the book has a lot more nuance and a\\nlot more war stories than I could fit here. If any of this resonated, you should\\ndefinitely read it.\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"If this landed for you, share it with your team and tell me which fitness\\nfunction you\\u2019d write first. And if you\\u2019ve read the second edition, I want to\\nknow whether the coupling chapter changed your mind the way it changed mine.\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["SoftwareEngineering"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE4UlEQVQ4yz1UW1OTVxT9XtqHqmM7XqqVSiEEkhAgMeRCQCIJ4SaQQCAESCA1Ei9UuQQCSQQEpVNvKAElJEAICJaigBdawNrasa2dsS+dvvren7G6z6n2Yc0+Odnf2muvs88RZHI55NlZHNJMGWTyTGRmyXlMSxcjXSJBXr4eKnUuROI0pKaJaC8D4ox0HkViMc9jv9n/wn9k2e8IM5EhlUIik3KSpuZmBIJBTE5OwnPag2JzMTQ6LSSUk5qWxglSRKkEESdlewJTKJHJODKkEiiOKdHV3Y3xcBj3pqawsLCIxPw8Ojo60OpuRa2tlojNUGs1nOyLVALF/xWy1lirDMkpKaits2FhcRE3b43hzvg4EokEZmdn4fP1EKEbDocDJ4xFqDhZASUVT3lHxqxh4C2/94150uv3Ix6PIxqLYZ6URaNRzMzMYnh4BE6XCy6Cx+NBg6MB5RXl/BsmhtnEIBzLVYGBmc58Gx0dRWR6GkvLy0Q0Q+TziEQiaHY50dDYyFUODg4iFAqhrr4eOn0eshU5XBCzTNAX5EOTp4OSSKutFkxMTGKRWl5fW+PK+gMBGKhFMSmR52TjZGUlfOTx2NgYmp1OFJ4wcDJGXG2xQCgpK4Wh6AS0tFFI8RSd5jfXriEcnkALqVFpNFDRAag0amQrFchSvCPt6eEK27xejH49SsVjmKJDFGx1dbDW1KC4xAxjsQlFJiMqq6tQZalGQeFx5FEHDCpNLhQqJd8z0ficpsI/bm/j+c4OlpeWEKBO7A12CI5GB1q/dJOaVtpo4KRavY4XYMr1x/P5qDBrspU5FPWUY0S9vR7Dl4fgPeOFnQ6IdWouKYHgbHGht68PQTLZScabzCZYrFaYKYERl5aXclVqrZqKFCPnmIKmQobDSZ8hWZSCjq5OdPu60f5VO12EJghuzyk6jGqUVZTxtthNYNUsNVauUJefB7VOg3QpO5Qs7mFahhhHjiahx9/Lx+r2nTsYuTKCLiIWBoaG4A/0oy8Y4NXqyAcxfZxMA6smcnNpCbVdQMR6TshUfXJgH6xkQ+jSJbpN97C6ukoX4Rau37wB4d7dCcTnZnBlZAj5+Rq0n/diZHgQNpsVOl0u3YYsaLUqyDLZbRCh0KDHQKif54nTU9HiasLW5hMsLsSxfD8BwXBhGmbfPBStN3CotBufV/bD2DmDyuAytG1hpNYM4EiFH/uLO3mO4UIUVaFvcbQqgAPmLsqnOb0Yg6lrDkaCsMsWhda3BrVvHYbQJnJ9G5C3r0B27gFyOh5C2/sYx4PPKD6BrncDSe5FCCfvYrc9jj2OBHZR/NA6jQ+sEcI0EdZOQXlxBYX+R9B0rsAYXOdrtlcUWIf07BI+tkdxoGkWnzbP4SBhty2CPXXTPL5f77XHeBT2N0RwxDkDiXcB6W0LyGhLQHb2PpJbYsg4HUeSkxJrJvGRZRy7ayZoPYHDzjnss0ew3xHFwcYYx17bXRxqnoXQF7qM4OBVbG+/xJ9v/sbTZ8/xcG0Tt8MRdPkHUGAqQ7nFBnfbOZzv8CE8SQ/Hg4fY2f4JyytrmF9axcuff6MpGcKloas0h24XVpfu46/Xr/HP27f4YWMdr57vYOvxBs54PfSSy+gNrMeL7zcRvn0Lf/zyEm9+fYXfKW5tPsV3Kw/wYnsLTx6tItjvx79c8zk1xHMBnAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/08d6ae2d357c421ca65cab39176b1cc1/a1946/evolutionaryArchitecture_cover.png","srcSet":"/static/08d6ae2d357c421ca65cab39176b1cc1/5b37e/evolutionaryArchitecture_cover.png 236w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/49058/evolutionaryArchitecture_cover.png 472w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/a1946/evolutionaryArchitecture_cover.png 944w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/6050d/evolutionaryArchitecture_cover.png 1200w","srcWebp":"/static/08d6ae2d357c421ca65cab39176b1cc1/99fbb/evolutionaryArchitecture_cover.webp","srcSetWebp":"/static/08d6ae2d357c421ca65cab39176b1cc1/77392/evolutionaryArchitecture_cover.webp 236w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/1f177/evolutionaryArchitecture_cover.webp 472w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/99fbb/evolutionaryArchitecture_cover.webp 944w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/9000d/evolutionaryArchitecture_cover.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20118a3274%203274%200%20003%20117h4c3%200%203-5%200-5l2-1%204-2c1-2%203-2%204-1%201%202%208%202%208%201l-4-1c-3%200-3%200-1-1h5c3%200%203%200%202-2l1-1h1l-1-2v-1c2%200-1-5-3-9-3-2-4-8-2-6l1-1c0-1%201-2%206-2%206%200%207%200%206%201l2%203h3l5%201c3%201%203%201%203-1-1-2%201-3%201-1h1c0-2-5-3-9-1h-3c0-2%202-2%2015-2l8-2%202-2c3-1%203%200%203%204s1%206%204%2010l4%205-4%201c-4%201-6%200-6-1l-1-2c-2-1-2%200-1%202v1l-3-4c-2-4-4-5-2-2l-1%202h-2v1c1%200%202%200%201%201l1%201h1v1c3%201-1%203-10%206l-12%204c-1%202-4%202-12%202-11%200-12%201-12%206s1%206%2033%207c22%202%2029%203%2029%204l4%201c4%200%2010%203%2012%206%202%202%203%202%207%202s5%200%206%202l1%202c4%203%206%208%206%2016%200%209-1%2011-3%2011s-10-9-10-11c1-2%200-2-1-2-3%200-6-2-4-2l1-1-3-1-3-3c0-2-2-3-4-4l-7-4c-3-2-8-2-9%200l-4%202c-3%201-4%202-6%205s-2%203-4%201h-1l1%202c2%201%201%203-2%203-2%200-3%200-2%201h1l1%201v5c2%208%202%208-26%208H0v114h11l-1-4-1-6c0-2%200-2%202-2%203%201%204%200%201-2-1-1-1-2%202-7l3-7%205%203%202%203v2l-1%205c-1%202-1%202-1-3%200-7-2-6-2%201%200%2010-1%2011-3%2013v4l2-2%201-2v2c0%205%202%202%202-3l1-7%202-4c1-4%203-6%204-4%202%201%202%202%202%204v1c1-2%204-3%204-1l2%202c2%200%202%201%202%203v1c2-2%202-2%206%201l5%202-4-4-5-2%202-4%202-5-2%203-3%204c-2%200-6-4-5-4h1c1%201%201%201%201-1l3-4c2-2%203-5%201-3-2%201-2%201-2-1-1-2-1-2-1%200v2l-1%201-1%202-1-3c1-4%200-2-2%203-1%203-1%203-3%202-2-2-2-2%204-13%202-6%206-8%205-4l-2%204%201%202%202-4c0-3%201-4%204-4l4%201c-2%205-2%206%200%204l-1%205c-1%204%201%202%203-4l2-5h29l2%208c1%205%202%208%203%207l-1-7c-3-10-1-13%203-4l3%204-2-5-2-4h3c3%200%204%201%205%202l2%203-1-3c0-3%204-3%206%201l3%202-1-2c-2-2-1-3%204-3%206%200%206%200%2011%204%203%204%205%205%204%206s-1%201%201%201l4%201-6%201c-5%200-5%200-1%201%204%200%205%201%205%202h1l2-1%201-1%202-3v-1h-2l-4-3-4-4%203-1c3%200%205%201%203%203-1%202%200%203%202%201%201-1%201-1%201%201%200%201%200%202%201%201%200-2%202-1%201%201h4c1%201%200%202-3%206-3%202-4%204-3%204l4-3c3-4%204-4%2010-4s7%200%206%201c-3%202-7%2023-5%2025%203%203%2038%203%2038%200h1l1%202%201-5v-3l2%201v4l2%202%206%201h5v-20l5-3c4-2%206-4%207-6l2-3%201%202c1%202%202%203%203%202l4%202c3%201%204%202%202%203-1%202-1%203%201%203l1%201%201%202v5c-1%201-1%201%201%201v2l2%202c0%204%202%207%205%207s3-1%200-12l-2-9h23l6-3%209-3c4-3%203%200-3%207-4%203-7%207-6%207l10-10c13-14%2021-19%2024-16h1l4-1c2%200%203%200%203%202v1l1-1c1-2%205-2%2022-2h21l1%203%202%202-1-3c-2-3%202-3%204%201l1%203v-3c-1-3-1-3%201-3%203%200%204%202%205%2014l1%204-2-5c-4-7-3-3%201%205s4%2010%201%206l-3-2%2010%2012-1-3v-3l-2-4c-1-3-6-23-5-24l1%201%202%203v-1l1-3c1%200%208%2012%208%2015h2c-1%201%201%204%205%208l4%207h-2l2%202h2l1%202c-1%201-1%201%200%200l1%201c-2%202%202%205%206%205h5V286h-59l-2-3-2-4-2-5-2-6c1-8-6-14-17-16l-8-1-7%205c-6%204-7%205-7%207%201%202%200%203-3%205l-4%203h4l-1%201-8%207-6%207h-8l-8-1h-1l-2%201%201-2%201-3%201-7c2-5%202-5%207-6%2013-1%2010%202%2033-31l21-31c0-1%203-3%206-3%202%200%203-1%203-2h2v1c-1%201%201%201%206%201%206%200%207%200%205%201-3%201-3%201-1%201s3%202%200%202l-1%201%204%201c1-1%202%200%202%201v3h-5v-1c3%200%202-2-1-2l-4%202-3%203v1c1%201%202%200%203-1s1-1%201%201c-1%202%200%203%201%201s8-2%2010-1h1l3-1c2%200%203-1%204-5l3-3h7l2%201%201%201%201%201v6c-2%202-1%209%200%207%202-3%205-2%205%201l1%203v2h1l2-3%202-1v1l1%201v1c-1%202%201%203%203%201l4-1%201%201-2%201c0%202%204%200%204-2%201-3%204-3%206-1%201%201%201-45%201-113V0H0v118m194-98l-7%207c-1%200%201-3%205-6%206-6%205-7-2-3l-11%203a125%20125%200%2000-22%209c-8%201-24%208-24%209h-1c0-2-18%205-19%207l-1%201c0-2-1-1-6%200l-5%203-1%201-1-1a698%20698%200%2001-16%2057c1-1%202%200%202%201l3%202c3%200%205%204%203%205-1%201-1%201-1-1%200-3-4-4-6-1l-1%201v-6l-6%2014a1935%201935%200%2001-4%2017l3%203h5l2-1%204-1c4-2%205-1%204%203-1%203-1%203-1%201%200-3%200-3-5-2l-3%202c49%2019%2049%2019%2051%2014l1-1a152%20152%200%200033-21c1%201%2012-5%2013-7l1-1%206-3%209-6c3-1%203-1%201-3l-3-3c-2-1-2-1%200-1l4%202%202%203%206-4c5-3%206-5%206-6a275%20275%200%2001-4-29l-1-10a1129%201129%200%2000-5-55l-8%207m67%2070c0%202%201%204%202%203l5%201c4%202%204%202%202%203l-2%202c0%201-1%202-3%201-2%200-3%200-2%201l2%202c1%200%201%201%200%200l-1%201h2c2%200%203%200%203%203%201%203-1%204-3%202v3l1%203%201-4%201%202%201%202%201%203%201%203%201%204%202%204v2c-1%201-1%201%201%204l2%206a403%20403%200%200122%2012v-4l1-4h1l1-4-1-1h-2v-4l-3-5v-5c1%201%201%201%201-1l-2-4c-2-1-2-2%201-2l3-2h-1l-2%201-2-3c-2-1-2-2-1-4v-5l2%201%201%201c1%200-2-4-4-4v-1l-1-1c-3%201-7-1-9-5l-3-3v-1h-1l-1-1c2-2-1-1-3%201h-5l-3-1-4-1-2-1m128%2044a8250%208250%200%2001-94%2034l-1%202%203%202v1c-2%200-2%200%201%208%203%209%203%209%203%200%200-6%200-7-2-7l-1-1h4c2%201%202%201%201%203l-1%207c1%206%201%207%204%208l3-1h1c0%201%201%201%202-1%202-3%203-2%201%201v3c1%202%202%201%203-3%200-3-1-3%2020-9l41-12%2023-7v-15l-1-16-10%203m-276%2070l-2%203c-1%201%208%2016%2010%2017v2h1c1-1%202-1%203%201%202%202%203%201%203-3-1-3-5-11-9-15l-2-2-1-2-3-1m-1%2069l-1%208c0%205%200%205%203%205s3%200%202-6v-5l1%205%201%206h29l-1-3c-1-4-2-4-6-4s-4%200-6-4-1-4-16-5l-6-1v4m141%203l-3%201c-9%203-10%203-11%206l-1%203h16v-11l-1%201M24%20303v9l1%207%204-1c5%200%208-2%206-5v-5c0-3-1-4-3-5h-8m48%201c0%203%200%203-3%202-2%200-3%200-4%202-4%205-1%2011%205%2011h4v-9l-1-8-1%202m45-1v9l1%207h4l6-2-4-1c-4%200-4%200-4-2%200-3%200-3%204-3l3-1-3-1c-3%200-4%200-4-2s1-2%204-2c6%200%205-2-1-3l-6%201m-19%205c-4%206%200%2013%205%2010%202-1%203%200%201%202l-4%201c-1-1-2%200-2%201%200%202%205%201%207-1%202-1%202-3%202-8v-7h-4c-3%200-4%201-5%202m47%200c-4%203-1%2011%203%2011%203%200%206-4%206-6%200-6-6-9-9-5m46-1c-4%203-1%2012%204%2012%203%200%205-3%205-6%200-4-2-7-5-7l-4%201M32%20334c-3%208-3%2012%200%207%202-3%208-3%209%200%200%203%202%202%202-1l-7-14-4%208M8%20362c-2%202-2%2014%200%2017s2%203%200%204l-3%203c0%204%204%200%208-8%203-6%203-7%202-9v-1c2%200%203-1%204-4l2-4h-6c-4%200-6%200-7%202m249%200l-1%203-1%201c-2-1-7%201-9%204l-7%202c-5%200-6%201-3%204%201%202%203%202%2010%202%2014%200%2031-6%2037-14l3-3-8-1c-6%200-8%200-8%202-4%205-5%205-2%200%201-3-8-3-11%200m128-1l15%2022v-23h-7l-8%201m-248%2029l-8%206-7%204h10c9%200%2011%200%2010-1l1-2v-1h-1l-1-2v-2l-1-3c0-2-1-1-3%201m-47%203l-2%203-2%202c-1%202-1%202%207%202l9-1-1-2-1-2c-1-4-8-5-10-2'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE4UlEQVQ4yz1UW1OTVxT9XtqHqmM7XqqVSiEEkhAgMeRCQCIJ4SaQQCAESCA1Ei9UuQQCSQQEpVNvKAElJEAICJaigBdawNrasa2dsS+dvvren7G6z6n2Yc0+Odnf2muvs88RZHI55NlZHNJMGWTyTGRmyXlMSxcjXSJBXr4eKnUuROI0pKaJaC8D4ox0HkViMc9jv9n/wn9k2e8IM5EhlUIik3KSpuZmBIJBTE5OwnPag2JzMTQ6LSSUk5qWxglSRKkEESdlewJTKJHJODKkEiiOKdHV3Y3xcBj3pqawsLCIxPw8Ojo60OpuRa2tlojNUGs1nOyLVALF/xWy1lirDMkpKaits2FhcRE3b43hzvg4EokEZmdn4fP1EKEbDocDJ4xFqDhZASUVT3lHxqxh4C2/94150uv3Ix6PIxqLYZ6URaNRzMzMYnh4BE6XCy6Cx+NBg6MB5RXl/BsmhtnEIBzLVYGBmc58Gx0dRWR6GkvLy0Q0Q+TziEQiaHY50dDYyFUODg4iFAqhrr4eOn0eshU5XBCzTNAX5EOTp4OSSKutFkxMTGKRWl5fW+PK+gMBGKhFMSmR52TjZGUlfOTx2NgYmp1OFJ4wcDJGXG2xQCgpK4Wh6AS0tFFI8RSd5jfXriEcnkALqVFpNFDRAag0amQrFchSvCPt6eEK27xejH49SsVjmKJDFGx1dbDW1KC4xAxjsQlFJiMqq6tQZalGQeFx5FEHDCpNLhQqJd8z0ficpsI/bm/j+c4OlpeWEKBO7A12CI5GB1q/dJOaVtpo4KRavY4XYMr1x/P5qDBrspU5FPWUY0S9vR7Dl4fgPeOFnQ6IdWouKYHgbHGht68PQTLZScabzCZYrFaYKYERl5aXclVqrZqKFCPnmIKmQobDSZ8hWZSCjq5OdPu60f5VO12EJghuzyk6jGqUVZTxtthNYNUsNVauUJefB7VOg3QpO5Qs7mFahhhHjiahx9/Lx+r2nTsYuTKCLiIWBoaG4A/0oy8Y4NXqyAcxfZxMA6smcnNpCbVdQMR6TshUfXJgH6xkQ+jSJbpN97C6ukoX4Rau37wB4d7dCcTnZnBlZAj5+Rq0n/diZHgQNpsVOl0u3YYsaLUqyDLZbRCh0KDHQKif54nTU9HiasLW5hMsLsSxfD8BwXBhGmbfPBStN3CotBufV/bD2DmDyuAytG1hpNYM4EiFH/uLO3mO4UIUVaFvcbQqgAPmLsqnOb0Yg6lrDkaCsMsWhda3BrVvHYbQJnJ9G5C3r0B27gFyOh5C2/sYx4PPKD6BrncDSe5FCCfvYrc9jj2OBHZR/NA6jQ+sEcI0EdZOQXlxBYX+R9B0rsAYXOdrtlcUWIf07BI+tkdxoGkWnzbP4SBhty2CPXXTPL5f77XHeBT2N0RwxDkDiXcB6W0LyGhLQHb2PpJbYsg4HUeSkxJrJvGRZRy7ayZoPYHDzjnss0ew3xHFwcYYx17bXRxqnoXQF7qM4OBVbG+/xJ9v/sbTZ8/xcG0Tt8MRdPkHUGAqQ7nFBnfbOZzv8CE8SQ/Hg4fY2f4JyytrmF9axcuff6MpGcKloas0h24XVpfu46/Xr/HP27f4YWMdr57vYOvxBs54PfSSy+gNrMeL7zcRvn0Lf/zyEm9+fYXfKW5tPsV3Kw/wYnsLTx6tItjvx79c8zk1xHMBnAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/08d6ae2d357c421ca65cab39176b1cc1/3ddd4/evolutionaryArchitecture_cover.png","srcSet":"/static/08d6ae2d357c421ca65cab39176b1cc1/078a8/evolutionaryArchitecture_cover.png 163w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/e56da/evolutionaryArchitecture_cover.png 327w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/3ddd4/evolutionaryArchitecture_cover.png 653w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/c5cc7/evolutionaryArchitecture_cover.png 980w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/6050d/evolutionaryArchitecture_cover.png 1200w","srcWebp":"/static/08d6ae2d357c421ca65cab39176b1cc1/0acdf/evolutionaryArchitecture_cover.webp","srcSetWebp":"/static/08d6ae2d357c421ca65cab39176b1cc1/ac59e/evolutionaryArchitecture_cover.webp 163w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/7660b/evolutionaryArchitecture_cover.webp 327w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/0acdf/evolutionaryArchitecture_cover.webp 653w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/75470/evolutionaryArchitecture_cover.webp 980w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/9000d/evolutionaryArchitecture_cover.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20118a3274%203274%200%20003%20117h4c3%200%203-5%200-5l2-1%204-2c1-2%203-2%204-1%201%202%208%202%208%201l-4-1c-3%200-3%200-1-1h5c3%200%203%200%202-2l1-1h1l-1-2v-1c2%200-1-5-3-9-3-2-4-8-2-6l1-1c0-1%201-2%206-2%206%200%207%200%206%201l2%203h3l5%201c3%201%203%201%203-1-1-2%201-3%201-1h1c0-2-5-3-9-1h-3c0-2%202-2%2015-2l8-2%202-2c3-1%203%200%203%204s1%206%204%2010l4%205-4%201c-4%201-6%200-6-1l-1-2c-2-1-2%200-1%202v1l-3-4c-2-4-4-5-2-2l-1%202h-2v1c1%200%202%200%201%201l1%201h1v1c3%201-1%203-10%206l-12%204c-1%202-4%202-12%202-11%200-12%201-12%206s1%206%2033%207c22%202%2029%203%2029%204l4%201c4%200%2010%203%2012%206%202%202%203%202%207%202s5%200%206%202l1%202c4%203%206%208%206%2016%200%209-1%2011-3%2011s-10-9-10-11c1-2%200-2-1-2-3%200-6-2-4-2l1-1-3-1-3-3c0-2-2-3-4-4l-7-4c-3-2-8-2-9%200l-4%202c-3%201-4%202-6%205s-2%203-4%201h-1l1%202c2%201%201%203-2%203-2%200-3%200-2%201h1l1%201v5c2%208%202%208-26%208H0v114h11l-1-4-1-6c0-2%200-2%202-2%203%201%204%200%201-2-1-1-1-2%202-7l3-7%205%203%202%203v2l-1%205c-1%202-1%202-1-3%200-7-2-6-2%201%200%2010-1%2011-3%2013v4l2-2%201-2v2c0%205%202%202%202-3l1-7%202-4c1-4%203-6%204-4%202%201%202%202%202%204v1c1-2%204-3%204-1l2%202c2%200%202%201%202%203v1c2-2%202-2%206%201l5%202-4-4-5-2%202-4%202-5-2%203-3%204c-2%200-6-4-5-4h1c1%201%201%201%201-1l3-4c2-2%203-5%201-3-2%201-2%201-2-1-1-2-1-2-1%200v2l-1%201-1%202-1-3c1-4%200-2-2%203-1%203-1%203-3%202-2-2-2-2%204-13%202-6%206-8%205-4l-2%204%201%202%202-4c0-3%201-4%204-4l4%201c-2%205-2%206%200%204l-1%205c-1%204%201%202%203-4l2-5h29l2%208c1%205%202%208%203%207l-1-7c-3-10-1-13%203-4l3%204-2-5-2-4h3c3%200%204%201%205%202l2%203-1-3c0-3%204-3%206%201l3%202-1-2c-2-2-1-3%204-3%206%200%206%200%2011%204%203%204%205%205%204%206s-1%201%201%201l4%201-6%201c-5%200-5%200-1%201%204%200%205%201%205%202h1l2-1%201-1%202-3v-1h-2l-4-3-4-4%203-1c3%200%205%201%203%203-1%202%200%203%202%201%201-1%201-1%201%201%200%201%200%202%201%201%200-2%202-1%201%201h4c1%201%200%202-3%206-3%202-4%204-3%204l4-3c3-4%204-4%2010-4s7%200%206%201c-3%202-7%2023-5%2025%203%203%2038%203%2038%200h1l1%202%201-5v-3l2%201v4l2%202%206%201h5v-20l5-3c4-2%206-4%207-6l2-3%201%202c1%202%202%203%203%202l4%202c3%201%204%202%202%203-1%202-1%203%201%203l1%201%201%202v5c-1%201-1%201%201%201v2l2%202c0%204%202%207%205%207s3-1%200-12l-2-9h23l6-3%209-3c4-3%203%200-3%207-4%203-7%207-6%207l10-10c13-14%2021-19%2024-16h1l4-1c2%200%203%200%203%202v1l1-1c1-2%205-2%2022-2h21l1%203%202%202-1-3c-2-3%202-3%204%201l1%203v-3c-1-3-1-3%201-3%203%200%204%202%205%2014l1%204-2-5c-4-7-3-3%201%205s4%2010%201%206l-3-2%2010%2012-1-3v-3l-2-4c-1-3-6-23-5-24l1%201%202%203v-1l1-3c1%200%208%2012%208%2015h2c-1%201%201%204%205%208l4%207h-2l2%202h2l1%202c-1%201-1%201%200%200l1%201c-2%202%202%205%206%205h5V286h-59l-2-3-2-4-2-5-2-6c1-8-6-14-17-16l-8-1-7%205c-6%204-7%205-7%207%201%202%200%203-3%205l-4%203h4l-1%201-8%207-6%207h-8l-8-1h-1l-2%201%201-2%201-3%201-7c2-5%202-5%207-6%2013-1%2010%202%2033-31l21-31c0-1%203-3%206-3%202%200%203-1%203-2h2v1c-1%201%201%201%206%201%206%200%207%200%205%201-3%201-3%201-1%201s3%202%200%202l-1%201%204%201c1-1%202%200%202%201v3h-5v-1c3%200%202-2-1-2l-4%202-3%203v1c1%201%202%200%203-1s1-1%201%201c-1%202%200%203%201%201s8-2%2010-1h1l3-1c2%200%203-1%204-5l3-3h7l2%201%201%201%201%201v6c-2%202-1%209%200%207%202-3%205-2%205%201l1%203v2h1l2-3%202-1v1l1%201v1c-1%202%201%203%203%201l4-1%201%201-2%201c0%202%204%200%204-2%201-3%204-3%206-1%201%201%201-45%201-113V0H0v118m194-98l-7%207c-1%200%201-3%205-6%206-6%205-7-2-3l-11%203a125%20125%200%2000-22%209c-8%201-24%208-24%209h-1c0-2-18%205-19%207l-1%201c0-2-1-1-6%200l-5%203-1%201-1-1a698%20698%200%2001-16%2057c1-1%202%200%202%201l3%202c3%200%205%204%203%205-1%201-1%201-1-1%200-3-4-4-6-1l-1%201v-6l-6%2014a1935%201935%200%2001-4%2017l3%203h5l2-1%204-1c4-2%205-1%204%203-1%203-1%203-1%201%200-3%200-3-5-2l-3%202c49%2019%2049%2019%2051%2014l1-1a152%20152%200%200033-21c1%201%2012-5%2013-7l1-1%206-3%209-6c3-1%203-1%201-3l-3-3c-2-1-2-1%200-1l4%202%202%203%206-4c5-3%206-5%206-6a275%20275%200%2001-4-29l-1-10a1129%201129%200%2000-5-55l-8%207m67%2070c0%202%201%204%202%203l5%201c4%202%204%202%202%203l-2%202c0%201-1%202-3%201-2%200-3%200-2%201l2%202c1%200%201%201%200%200l-1%201h2c2%200%203%200%203%203%201%203-1%204-3%202v3l1%203%201-4%201%202%201%202%201%203%201%203%201%204%202%204v2c-1%201-1%201%201%204l2%206a403%20403%200%200122%2012v-4l1-4h1l1-4-1-1h-2v-4l-3-5v-5c1%201%201%201%201-1l-2-4c-2-1-2-2%201-2l3-2h-1l-2%201-2-3c-2-1-2-2-1-4v-5l2%201%201%201c1%200-2-4-4-4v-1l-1-1c-3%201-7-1-9-5l-3-3v-1h-1l-1-1c2-2-1-1-3%201h-5l-3-1-4-1-2-1m128%2044a8250%208250%200%2001-94%2034l-1%202%203%202v1c-2%200-2%200%201%208%203%209%203%209%203%200%200-6%200-7-2-7l-1-1h4c2%201%202%201%201%203l-1%207c1%206%201%207%204%208l3-1h1c0%201%201%201%202-1%202-3%203-2%201%201v3c1%202%202%201%203-3%200-3-1-3%2020-9l41-12%2023-7v-15l-1-16-10%203m-276%2070l-2%203c-1%201%208%2016%2010%2017v2h1c1-1%202-1%203%201%202%202%203%201%203-3-1-3-5-11-9-15l-2-2-1-2-3-1m-1%2069l-1%208c0%205%200%205%203%205s3%200%202-6v-5l1%205%201%206h29l-1-3c-1-4-2-4-6-4s-4%200-6-4-1-4-16-5l-6-1v4m141%203l-3%201c-9%203-10%203-11%206l-1%203h16v-11l-1%201M24%20303v9l1%207%204-1c5%200%208-2%206-5v-5c0-3-1-4-3-5h-8m48%201c0%203%200%203-3%202-2%200-3%200-4%202-4%205-1%2011%205%2011h4v-9l-1-8-1%202m45-1v9l1%207h4l6-2-4-1c-4%200-4%200-4-2%200-3%200-3%204-3l3-1-3-1c-3%200-4%200-4-2s1-2%204-2c6%200%205-2-1-3l-6%201m-19%205c-4%206%200%2013%205%2010%202-1%203%200%201%202l-4%201c-1-1-2%200-2%201%200%202%205%201%207-1%202-1%202-3%202-8v-7h-4c-3%200-4%201-5%202m47%200c-4%203-1%2011%203%2011%203%200%206-4%206-6%200-6-6-9-9-5m46-1c-4%203-1%2012%204%2012%203%200%205-3%205-6%200-4-2-7-5-7l-4%201M32%20334c-3%208-3%2012%200%207%202-3%208-3%209%200%200%203%202%202%202-1l-7-14-4%208M8%20362c-2%202-2%2014%200%2017s2%203%200%204l-3%203c0%204%204%200%208-8%203-6%203-7%202-9v-1c2%200%203-1%204-4l2-4h-6c-4%200-6%200-7%202m249%200l-1%203-1%201c-2-1-7%201-9%204l-7%202c-5%200-6%201-3%204%201%202%203%202%2010%202%2014%200%2031-6%2037-14l3-3-8-1c-6%200-8%200-8%202-4%205-5%205-2%200%201-3-8-3-11%200m128-1l15%2022v-23h-7l-8%201m-248%2029l-8%206-7%204h10c9%200%2011%200%2010-1l1-2v-1h-1l-1-2v-2l-1-3c0-2-1-1-3%201m-47%203l-2%203-2%202c-1%202-1%202%207%202l9-1-1-2-1-2c-1-4-8-5-10-2'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE4UlEQVQ4yz1UW1OTVxT9XtqHqmM7XqqVSiEEkhAgMeRCQCIJ4SaQQCAESCA1Ei9UuQQCSQQEpVNvKAElJEAICJaigBdawNrasa2dsS+dvvren7G6z6n2Yc0+Odnf2muvs88RZHI55NlZHNJMGWTyTGRmyXlMSxcjXSJBXr4eKnUuROI0pKaJaC8D4ox0HkViMc9jv9n/wn9k2e8IM5EhlUIik3KSpuZmBIJBTE5OwnPag2JzMTQ6LSSUk5qWxglSRKkEESdlewJTKJHJODKkEiiOKdHV3Y3xcBj3pqawsLCIxPw8Ojo60OpuRa2tlojNUGs1nOyLVALF/xWy1lirDMkpKaits2FhcRE3b43hzvg4EokEZmdn4fP1EKEbDocDJ4xFqDhZASUVT3lHxqxh4C2/94150uv3Ix6PIxqLYZ6URaNRzMzMYnh4BE6XCy6Cx+NBg6MB5RXl/BsmhtnEIBzLVYGBmc58Gx0dRWR6GkvLy0Q0Q+TziEQiaHY50dDYyFUODg4iFAqhrr4eOn0eshU5XBCzTNAX5EOTp4OSSKutFkxMTGKRWl5fW+PK+gMBGKhFMSmR52TjZGUlfOTx2NgYmp1OFJ4wcDJGXG2xQCgpK4Wh6AS0tFFI8RSd5jfXriEcnkALqVFpNFDRAag0amQrFchSvCPt6eEK27xejH49SsVjmKJDFGx1dbDW1KC4xAxjsQlFJiMqq6tQZalGQeFx5FEHDCpNLhQqJd8z0ficpsI/bm/j+c4OlpeWEKBO7A12CI5GB1q/dJOaVtpo4KRavY4XYMr1x/P5qDBrspU5FPWUY0S9vR7Dl4fgPeOFnQ6IdWouKYHgbHGht68PQTLZScabzCZYrFaYKYERl5aXclVqrZqKFCPnmIKmQobDSZ8hWZSCjq5OdPu60f5VO12EJghuzyk6jGqUVZTxtthNYNUsNVauUJefB7VOg3QpO5Qs7mFahhhHjiahx9/Lx+r2nTsYuTKCLiIWBoaG4A/0oy8Y4NXqyAcxfZxMA6smcnNpCbVdQMR6TshUfXJgH6xkQ+jSJbpN97C6ukoX4Rau37wB4d7dCcTnZnBlZAj5+Rq0n/diZHgQNpsVOl0u3YYsaLUqyDLZbRCh0KDHQKif54nTU9HiasLW5hMsLsSxfD8BwXBhGmbfPBStN3CotBufV/bD2DmDyuAytG1hpNYM4EiFH/uLO3mO4UIUVaFvcbQqgAPmLsqnOb0Yg6lrDkaCsMsWhda3BrVvHYbQJnJ9G5C3r0B27gFyOh5C2/sYx4PPKD6BrncDSe5FCCfvYrc9jj2OBHZR/NA6jQ+sEcI0EdZOQXlxBYX+R9B0rsAYXOdrtlcUWIf07BI+tkdxoGkWnzbP4SBhty2CPXXTPL5f77XHeBT2N0RwxDkDiXcB6W0LyGhLQHb2PpJbYsg4HUeSkxJrJvGRZRy7ayZoPYHDzjnss0ew3xHFwcYYx17bXRxqnoXQF7qM4OBVbG+/xJ9v/sbTZ8/xcG0Tt8MRdPkHUGAqQ7nFBnfbOZzv8CE8SQ/Hg4fY2f4JyytrmF9axcuff6MpGcKloas0h24XVpfu46/Xr/HP27f4YWMdr57vYOvxBs54PfSSy+gNrMeL7zcRvn0Lf/zyEm9+fYXfKW5tPsV3Kw/wYnsLTx6tItjvx79c8zk1xHMBnAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/08d6ae2d357c421ca65cab39176b1cc1/502b1/evolutionaryArchitecture_cover.png","srcSet":"/static/08d6ae2d357c421ca65cab39176b1cc1/f2e6d/evolutionaryArchitecture_cover.png 114w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/4ddba/evolutionaryArchitecture_cover.png 229w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/502b1/evolutionaryArchitecture_cover.png 457w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/7ddc2/evolutionaryArchitecture_cover.png 686w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/435bf/evolutionaryArchitecture_cover.png 914w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/6050d/evolutionaryArchitecture_cover.png 1200w","srcWebp":"/static/08d6ae2d357c421ca65cab39176b1cc1/15384/evolutionaryArchitecture_cover.webp","srcSetWebp":"/static/08d6ae2d357c421ca65cab39176b1cc1/31fce/evolutionaryArchitecture_cover.webp 114w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/e3e25/evolutionaryArchitecture_cover.webp 229w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/15384/evolutionaryArchitecture_cover.webp 457w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/0258d/evolutionaryArchitecture_cover.webp 686w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/64ea2/evolutionaryArchitecture_cover.webp 914w,\n/static/08d6ae2d357c421ca65cab39176b1cc1/9000d/evolutionaryArchitecture_cover.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20118a3274%203274%200%20003%20117h4c3%200%203-5%200-5l2-1%204-2c1-2%203-2%204-1%201%202%208%202%208%201l-4-1c-3%200-3%200-1-1h5c3%200%203%200%202-2l1-1h1l-1-2v-1c2%200-1-5-3-9-3-2-4-8-2-6l1-1c0-1%201-2%206-2%206%200%207%200%206%201l2%203h3l5%201c3%201%203%201%203-1-1-2%201-3%201-1h1c0-2-5-3-9-1h-3c0-2%202-2%2015-2l8-2%202-2c3-1%203%200%203%204s1%206%204%2010l4%205-4%201c-4%201-6%200-6-1l-1-2c-2-1-2%200-1%202v1l-3-4c-2-4-4-5-2-2l-1%202h-2v1c1%200%202%200%201%201l1%201h1v1c3%201-1%203-10%206l-12%204c-1%202-4%202-12%202-11%200-12%201-12%206s1%206%2033%207c22%202%2029%203%2029%204l4%201c4%200%2010%203%2012%206%202%202%203%202%207%202s5%200%206%202l1%202c4%203%206%208%206%2016%200%209-1%2011-3%2011s-10-9-10-11c1-2%200-2-1-2-3%200-6-2-4-2l1-1-3-1-3-3c0-2-2-3-4-4l-7-4c-3-2-8-2-9%200l-4%202c-3%201-4%202-6%205s-2%203-4%201h-1l1%202c2%201%201%203-2%203-2%200-3%200-2%201h1l1%201v5c2%208%202%208-26%208H0v114h11l-1-4-1-6c0-2%200-2%202-2%203%201%204%200%201-2-1-1-1-2%202-7l3-7%205%203%202%203v2l-1%205c-1%202-1%202-1-3%200-7-2-6-2%201%200%2010-1%2011-3%2013v4l2-2%201-2v2c0%205%202%202%202-3l1-7%202-4c1-4%203-6%204-4%202%201%202%202%202%204v1c1-2%204-3%204-1l2%202c2%200%202%201%202%203v1c2-2%202-2%206%201l5%202-4-4-5-2%202-4%202-5-2%203-3%204c-2%200-6-4-5-4h1c1%201%201%201%201-1l3-4c2-2%203-5%201-3-2%201-2%201-2-1-1-2-1-2-1%200v2l-1%201-1%202-1-3c1-4%200-2-2%203-1%203-1%203-3%202-2-2-2-2%204-13%202-6%206-8%205-4l-2%204%201%202%202-4c0-3%201-4%204-4l4%201c-2%205-2%206%200%204l-1%205c-1%204%201%202%203-4l2-5h29l2%208c1%205%202%208%203%207l-1-7c-3-10-1-13%203-4l3%204-2-5-2-4h3c3%200%204%201%205%202l2%203-1-3c0-3%204-3%206%201l3%202-1-2c-2-2-1-3%204-3%206%200%206%200%2011%204%203%204%205%205%204%206s-1%201%201%201l4%201-6%201c-5%200-5%200-1%201%204%200%205%201%205%202h1l2-1%201-1%202-3v-1h-2l-4-3-4-4%203-1c3%200%205%201%203%203-1%202%200%203%202%201%201-1%201-1%201%201%200%201%200%202%201%201%200-2%202-1%201%201h4c1%201%200%202-3%206-3%202-4%204-3%204l4-3c3-4%204-4%2010-4s7%200%206%201c-3%202-7%2023-5%2025%203%203%2038%203%2038%200h1l1%202%201-5v-3l2%201v4l2%202%206%201h5v-20l5-3c4-2%206-4%207-6l2-3%201%202c1%202%202%203%203%202l4%202c3%201%204%202%202%203-1%202-1%203%201%203l1%201%201%202v5c-1%201-1%201%201%201v2l2%202c0%204%202%207%205%207s3-1%200-12l-2-9h23l6-3%209-3c4-3%203%200-3%207-4%203-7%207-6%207l10-10c13-14%2021-19%2024-16h1l4-1c2%200%203%200%203%202v1l1-1c1-2%205-2%2022-2h21l1%203%202%202-1-3c-2-3%202-3%204%201l1%203v-3c-1-3-1-3%201-3%203%200%204%202%205%2014l1%204-2-5c-4-7-3-3%201%205s4%2010%201%206l-3-2%2010%2012-1-3v-3l-2-4c-1-3-6-23-5-24l1%201%202%203v-1l1-3c1%200%208%2012%208%2015h2c-1%201%201%204%205%208l4%207h-2l2%202h2l1%202c-1%201-1%201%200%200l1%201c-2%202%202%205%206%205h5V286h-59l-2-3-2-4-2-5-2-6c1-8-6-14-17-16l-8-1-7%205c-6%204-7%205-7%207%201%202%200%203-3%205l-4%203h4l-1%201-8%207-6%207h-8l-8-1h-1l-2%201%201-2%201-3%201-7c2-5%202-5%207-6%2013-1%2010%202%2033-31l21-31c0-1%203-3%206-3%202%200%203-1%203-2h2v1c-1%201%201%201%206%201%206%200%207%200%205%201-3%201-3%201-1%201s3%202%200%202l-1%201%204%201c1-1%202%200%202%201v3h-5v-1c3%200%202-2-1-2l-4%202-3%203v1c1%201%202%200%203-1s1-1%201%201c-1%202%200%203%201%201s8-2%2010-1h1l3-1c2%200%203-1%204-5l3-3h7l2%201%201%201%201%201v6c-2%202-1%209%200%207%202-3%205-2%205%201l1%203v2h1l2-3%202-1v1l1%201v1c-1%202%201%203%203%201l4-1%201%201-2%201c0%202%204%200%204-2%201-3%204-3%206-1%201%201%201-45%201-113V0H0v118m194-98l-7%207c-1%200%201-3%205-6%206-6%205-7-2-3l-11%203a125%20125%200%2000-22%209c-8%201-24%208-24%209h-1c0-2-18%205-19%207l-1%201c0-2-1-1-6%200l-5%203-1%201-1-1a698%20698%200%2001-16%2057c1-1%202%200%202%201l3%202c3%200%205%204%203%205-1%201-1%201-1-1%200-3-4-4-6-1l-1%201v-6l-6%2014a1935%201935%200%2001-4%2017l3%203h5l2-1%204-1c4-2%205-1%204%203-1%203-1%203-1%201%200-3%200-3-5-2l-3%202c49%2019%2049%2019%2051%2014l1-1a152%20152%200%200033-21c1%201%2012-5%2013-7l1-1%206-3%209-6c3-1%203-1%201-3l-3-3c-2-1-2-1%200-1l4%202%202%203%206-4c5-3%206-5%206-6a275%20275%200%2001-4-29l-1-10a1129%201129%200%2000-5-55l-8%207m67%2070c0%202%201%204%202%203l5%201c4%202%204%202%202%203l-2%202c0%201-1%202-3%201-2%200-3%200-2%201l2%202c1%200%201%201%200%200l-1%201h2c2%200%203%200%203%203%201%203-1%204-3%202v3l1%203%201-4%201%202%201%202%201%203%201%203%201%204%202%204v2c-1%201-1%201%201%204l2%206a403%20403%200%200122%2012v-4l1-4h1l1-4-1-1h-2v-4l-3-5v-5c1%201%201%201%201-1l-2-4c-2-1-2-2%201-2l3-2h-1l-2%201-2-3c-2-1-2-2-1-4v-5l2%201%201%201c1%200-2-4-4-4v-1l-1-1c-3%201-7-1-9-5l-3-3v-1h-1l-1-1c2-2-1-1-3%201h-5l-3-1-4-1-2-1m128%2044a8250%208250%200%2001-94%2034l-1%202%203%202v1c-2%200-2%200%201%208%203%209%203%209%203%200%200-6%200-7-2-7l-1-1h4c2%201%202%201%201%203l-1%207c1%206%201%207%204%208l3-1h1c0%201%201%201%202-1%202-3%203-2%201%201v3c1%202%202%201%203-3%200-3-1-3%2020-9l41-12%2023-7v-15l-1-16-10%203m-276%2070l-2%203c-1%201%208%2016%2010%2017v2h1c1-1%202-1%203%201%202%202%203%201%203-3-1-3-5-11-9-15l-2-2-1-2-3-1m-1%2069l-1%208c0%205%200%205%203%205s3%200%202-6v-5l1%205%201%206h29l-1-3c-1-4-2-4-6-4s-4%200-6-4-1-4-16-5l-6-1v4m141%203l-3%201c-9%203-10%203-11%206l-1%203h16v-11l-1%201M24%20303v9l1%207%204-1c5%200%208-2%206-5v-5c0-3-1-4-3-5h-8m48%201c0%203%200%203-3%202-2%200-3%200-4%202-4%205-1%2011%205%2011h4v-9l-1-8-1%202m45-1v9l1%207h4l6-2-4-1c-4%200-4%200-4-2%200-3%200-3%204-3l3-1-3-1c-3%200-4%200-4-2s1-2%204-2c6%200%205-2-1-3l-6%201m-19%205c-4%206%200%2013%205%2010%202-1%203%200%201%202l-4%201c-1-1-2%200-2%201%200%202%205%201%207-1%202-1%202-3%202-8v-7h-4c-3%200-4%201-5%202m47%200c-4%203-1%2011%203%2011%203%200%206-4%206-6%200-6-6-9-9-5m46-1c-4%203-1%2012%204%2012%203%200%205-3%205-6%200-4-2-7-5-7l-4%201M32%20334c-3%208-3%2012%200%207%202-3%208-3%209%200%200%203%202%202%202-1l-7-14-4%208M8%20362c-2%202-2%2014%200%2017s2%203%200%204l-3%203c0%204%204%200%208-8%203-6%203-7%202-9v-1c2%200%203-1%204-4l2-4h-6c-4%200-6%200-7%202m249%200l-1%203-1%201c-2-1-7%201-9%204l-7%202c-5%200-6%201-3%204%201%202%203%202%2010%202%2014%200%2031-6%2037-14l3-3-8-1c-6%200-8%200-8%202-4%205-5%205-2%200%201-3-8-3-11%200m128-1l15%2022v-23h-7l-8%201m-248%2029l-8%206-7%204h10c9%200%2011%200%2010-1l1-2v-1h-1l-1-2v-2l-1-3c0-2-1-1-3%201m-47%203l-2%203-2%202c-1%202-1%202%207%202l9-1-1-2-1-2c-1-4-8-5-10-2'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/08d6ae2d357c421ca65cab39176b1cc1/6050d/evolutionaryArchitecture_cover.png"}}}]}},"staticQueryHashes":["1609575157","2068910035","2361467917","2361467917","3838421970","500183989","5650841"]}