{"componentChunkName":"component---gatsby-theme-spaceout-src-templates-article-template-tsx","path":"/beware-of-the-hype-train","result":{"pageContext":{"article":{"id":"7aae8fcf-70a1-578b-858c-9254edb0f609","slug":"/beware-of-the-hype-train","secret":false,"title":"Beware of the Hype Train","author":"Luke Celitan","date":"October 27th, 2025","dateForSEO":"2025-10-27T00:00:00.000Z","timeToRead":7,"excerpt":"A deep dive into the risks and realities of investing in hyped-up technologies and frameworks.","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\": \"Beware of the Hype Train\",\n  \"excerpt\": \"A deep dive into the risks and realities of investing in hyped-up technologies and frameworks.\",\n  \"date\": \"2025-10-27T00:00:00.000Z\",\n  \"hero\": \"hypetrain.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"TS\", \"JS\"]\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\": \"beware-of-the-hype-train\"\n  }, \"Beware of the Hype Train\"), mdx(\"h2\", {\n    \"id\": \"introduction\"\n  }, \"Introduction\"), mdx(\"p\", null, \"Every year, the tech world is swept up by a new wave of excitement. A framework, a language, or a tool emerges, promising to revolutionize how we build software. The blogs light up, Twitter explodes, and suddenly everyone is talking about the Next Big Thing. But as any seasoned developer or architect knows, riding the hype train can be exhilarating\\u2014and dangerous. In this post, I\\u2019ll take you on a deep technical journey through the risks and realities of investing in hyped-up technologies and frameworks, drawing on the Gartner Hype Cycle, real-world case studies, and advanced concepts like Product Lifecycle Management (PLM) and technical debt. If you\\u2019re a developer, team lead, or CTO, this is your definitive guide to surviving\\u2014and thriving\\u2014amidst the hype.\"), mdx(\"h2\", {\n    \"id\": \"historical-context--the-hype-cycle\"\n  }, \"Historical Context & The Hype Cycle\"), mdx(\"h3\", {\n    \"id\": \"the-origin-of-the-hype-cycle\"\n  }, \"The Origin of the Hype Cycle\"), mdx(\"p\", null, \"The Gartner Hype Cycle, introduced in 1995 by analyst Jackie Fenn, is a graphical representation of the maturity, adoption, and social application of specific technologies. It\\u2019s become a staple in tech strategy discussions, mapping the journey from wild optimism to sobering reality and, hopefully, eventual productivity. The five phases are:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Technology Trigger\"), \": A breakthrough or innovation sparks interest. Proof-of-concept stories and media buzz abound, but usable products are rare.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Peak of Inflated Expectations\"), \": Success stories (and failures) multiply. Some companies jump in; most watch from the sidelines.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Trough of Disillusionment\"), \": Reality sets in. Early experiments fail, vendors drop out, and only the strongest survive.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Slope of Enlightenment\"), \": The technology\\u2019s real benefits become clear. Second- and third-generation products appear, and cautious enterprises start pilots.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Plateau of Productivity\"), \": Mainstream adoption takes off. The technology proves its worth and becomes a staple\\u2014if it survives.\")), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1152px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"66.66666666666666%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACHElEQVQoz01SaXObMBDl//+l5mvqepL4qO06NuYQRuKQQOK2AEGf7TTTHY1YYI/33q4VEBJFUd/3TdMkSSqlzPJc69vxeExTPs+zMcZxnDhJ4E/TZMzkOC5S8Go9H7CqqpI0resaaafTp+/7dd1M8zyMJk1TmUvEjOPU90OSxJyLezKiURueUgodcAuRkeDade0w9DetzTR/2/Q432YVRfFMjiJGiO+T0A/jlHMgul7DXKl/aO8xnPP9fg9oaAOmVlmW+JoJsVmvL453jTiX9Xb/CeTg2XY382iNfNyM0ZeXH7+WSxIE4zhaWSaCgGy3WxqGsmwSoVo9eGFy+vwD2qO5KwTndD57nsuFgK4KYB+1LCH44bA/2zYJCOOqu/WDmYJYua4bUoo4CFkUCk4QMiEr1U1JXqayBiALShJCgDDPc5qqYRhQ0gk5OrjOZb1ef2w211jK1gQsWb6vHNfzPL9tu+eo2Ga7WX28267Pi+7JTtY6lk0s1NH2qKj0eAeJ9pQyCIxdAOGvUWmtc1VQUep+uAs7zaOZWz12/XylzHUdnFw+ZZ+n/2ZlYbDgavu0ajp9e5puOz2jiBlBGAtXlRVYGDN2N91BlYdheFA7wz7sfm93ux1ov729/Xx9pSzaHw6r1SrLZVGUlNIAIyEEnWz7vFgs4jgGRKttW1RFGn60XQsHlMCFRdHFuWALQBW7AV1x31+LAjGMMSD8Cxh21Q5YCk0DAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/8d5a58cca3b64a6cddb54c47a569ec5d/c2ad5/Hype-Cycle-General.webp 1152w\"],\n    \"sizes\": \"(max-width: 1152px) 100vw, 1152px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/8d5a58cca3b64a6cddb54c47a569ec5d/8dd4b/Hype-Cycle-General.png 1152w\"],\n    \"sizes\": \"(max-width: 1152px) 100vw, 1152px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/8d5a58cca3b64a6cddb54c47a569ec5d/8dd4b/Hype-Cycle-General.png\",\n    \"alt\": \"Gartner Hype Cycle\",\n    \"title\": \"Gartner Hype Cycle\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \"), \"\\nBy Olga Tarkovskiy - Own work, CC BY-SA 3.0, \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://commons.wikimedia.org/w/index.php?curid=27546041\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://commons.wikimedia.org/w/index.php?curid=27546041\")), mdx(\"h4\", {\n    \"id\": \"criticisms-and-limitations\"\n  }, \"Criticisms and Limitations\"), mdx(\"p\", null, \"Despite its popularity, the Hype Cycle is not without flaws. Critics argue it\\u2019s not scientific, lacks actionable guidance, and doesn\\u2019t always match real-world adoption. The Economist\\u2019s 2024 research found that only about a fifth of breakthrough technologies follow the full cycle; most either become widely used without drama or fade away after the initial excitement. Still, the Hype Cycle remains a useful lens for understanding tech trends\\u2014and their risks.\"), mdx(\"h4\", {\n    \"id\": \"real-world-examples\"\n  }, \"Real-World Examples\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Blockchain\"), \": Once hailed as the future of everything, blockchain has seen countless failed projects and pivots. While some applications (like cryptocurrencies) have matured, many others remain stuck in the trough.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"JavaScript Frameworks\"), \": From AngularJS to Svelte, the frontend world is littered with frameworks that soared on hype, only to be replaced or radically rewritten.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"NoSQL Databases\"), \": Promised to replace relational databases, but only a handful (MongoDB, Cassandra) reached the plateau; many others faded away.\")), mdx(\"h2\", {\n    \"id\": \"risks-of-investing-in-hyped-technologies\"\n  }, \"Risks of Investing in Hyped Technologies\"), mdx(\"h3\", {\n    \"id\": \"the-dangers-of-0x-releases-and-fast-changing-apis\"\n  }, \"The Dangers of 0.x Releases, and fast changing API\\u2019s\"), mdx(\"p\", null, \"One of the first red flags when evaluating a new technology is its version number. Anything below 1.0.0 is, by definition, experimental. APIs change, features are added or removed, and breaking changes are the norm. Investing heavily in a 0.x framework is like building a house on shifting sand.\"), mdx(\"h4\", {\n    \"id\": \"example-breaking-changes-in-early-frameworks\"\n  }, \"Example: Breaking Changes in Early Frameworks\"), mdx(\"p\", null, \"This is one is one of my most painfull expierences, i am still stuck on the v2 of gatsby, take a look at some of these migrations needed to update from gatsby v2 to v3, it\\u2019s not just a matter of changing the version number, you need to rewrite a lot of code. Link to the actual migration guide \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.gatsbyjs.com/docs/reference/release-notes/migrating-from-v2-to-v3/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"here\"), \".\"), mdx(\"p\", null, \"The gatsby framework has moved on to v5, imo very fast paced proggression, one of many reasons its not longer so popular and forgotten by many. \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"import React from \\\"react\\\"\\n- import { navigateTo, push, replace } from \\\"gatsby\\\"\\n+ import { navigate } from \\\"gatsby\\\"\\nconst Form = () => (\\n  <form\\n    onSubmit={event => {\\n      event.preventDefault()\\n-     navigateTo(\\\"/form-submitted/\\\") // or push() or replace()\\n+     navigate(\\\"/form-submitted/\\\")\\n    }}\\n  >\\n)\\n\\n\")), mdx(\"p\", null, \"gatsby-config.js\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"module.exports = {\\n- __experimentalThemes: [\\\"gatsby-theme-blog\\\"]\\n+ plugins: [\\\"gatsby-theme-blog\\\"]\\n}\\n\\n\")), mdx(\"p\", null, \"Removal of pathContext\\nThe deprecated API pathContext was removed. You need to rename instances of it to pageContext. For example, if you passed information inside your gatsby-node.js and accessed it in your page:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"src/templates/context.jsx\\nimport React from \\\"react\\\"\\n\\n- const ContextPage = ({ pathContext }) => (\\n+ const ContextPage = ({ pageContext }) => (\\n  <main>\\n    <h1>Hello from a page that uses the old pathContext</h1>\\n    <p>It was deprecated in favor of pageContext</p>\\n-   <p>{pathContext.foo}</p>\\n+   <p>{pageContext.foo}</p>\\n  </main>\\n)\\n\\nexport default ContextPage\\n\\n\")), mdx(\"p\", null, \"Removal of boundActionCreators\\nThe deprecated API boundActionCreators was removed. Please rename its instances to actions to keep the same behavior. For example, in your gatsby-node.js file:\"), mdx(\"p\", null, \"gatsby-node.js\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"Copygatsby-node.js: copy code to clipboard\\nexports.createPages = (gatsbyArgs, pluginArgs) => {\\n- const { boundActionCreators } = gatsbyArgs\\n+ const { actions } = gatsbyArgs\\n}\\n\\n\")), mdx(\"p\", null, \"Removal of deleteNodes\\nThe deprecated API deleteNodes was removed. Please iterate over the nodes instead and call deleteNode:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"const nodes = [\\\"an-array-of-nodes\\\"]\\n- deleteNodes(nodes)\\n+ nodes.forEach(node => deleteNode(node))\\n\")), mdx(\"p\", null, \"Removal of fieldName & fieldValue from createNodeField\\nThe arguments fieldName and fieldValue were removed from the createNodeField API. Please use name and value instead.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"exports.onCreateNode = ({ node, actions }) => {\\n  const { createNodeField } = actions\\n  createNodeField({\\n    node,\\n-   fieldName: \\\"slug\\\",\\n-   fieldValue: \\\"my-custom-slug\\\",\\n+   name: \\\"slug\\\",\\n+   value: \\\"my-custom-slug\\\",\\n  })\\n}\\n\")), mdx(\"p\", null, \"Removal of hasNodeChanged from public API surface\\nThis API is no longer necessary, as there is an internal check for whether or not a node has changed.\"), mdx(\"p\", null, \"Removal of sizes & resolutions for image queries\\nThe sizes and resolutions queries were deprecated in v2 in favor of fluid and fixed.\"), mdx(\"p\", null, \"While fluid, fixed, and gatsby-image will continue to work in v3, we highly recommend migrating to the new gatsby-plugin-image. Read the Migrating from gatsby-image to gatsby-plugin-image guide to learn more about its benefits and how to use it.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"import React from \\\"react\\\"\\nimport { graphql } from \\\"gatsby\\\"\\nimport Img from \\\"gatsby-image\\\"\\n\\nconst Example = ({ data }) => {\\n  <div>\\n-    <Img sizes={data.foo.childImageSharp.sizes} />\\n-    <Img resolutions={data.bar.childImageSharp.resolutions} />\\n+    <Img fluid={data.foo.childImageSharp.fluid} />\\n+    <Img fixed={data.bar.childImageSharp.fixed} />\\n  </div>\\n}\\n\\nexport default Example\\n\\nexport const pageQuery = graphql`\\n  query IndexQuery {\\n    foo: file(relativePath: { regex: \\\"/foo.jpg/\\\" }) {\\n      childImageSharp {\\n-        sizes(maxWidth: 700) {\\n-          ...GatsbyImageSharpSizes\\n+        fluid(maxWidth: 700) {\\n+          ...GatsbyImageSharpFluid\\n        }\\n      }\\n    }\\n    bar: file(relativePath: { regex: \\\"/bar.jpg/\\\" }) {\\n      childImageSharp {\\n-        resolutions(width: 500) {\\n-          ...GatsbyImageSharpResolutions_withWebp\\n+        fixed(width: 500) {\\n+          ...GatsbyImageSharpFixed_withWebp\\n        }\\n      }\\n    }\\n  }\\n`\\n\")), mdx(\"p\", null, \"Thats not all the chagnes needed to update to the new gatsby version, the list goes on and on, but you get the idea.\"), mdx(\"p\", null, \"Migrating codebases is painful, especially under business pressure. If you\\u2019re not planning for refactoring from day one, you\\u2019re setting yourself up for failure.\"), mdx(\"h3\", {\n    \"id\": \"solo-maintainer-risks-and-open-source-sustainability\"\n  }, \"Solo-Maintainer Risks and Open Source Sustainability\"), mdx(\"p\", null, \"Open source is a double-edged sword. While community-driven projects can be robust, those maintained by a single developer are risky. Solo maintainers may lose interest, lack resources, or simply disappear. Without a healthy contributor base, features stagnate, bugs linger, and backward compatibility is often ignored.\"), mdx(\"h4\", {\n    \"id\": \"example-abandoned-packages\"\n  }, \"Example: Abandoned Packages\"), mdx(\"p\", null, \"Consider the fate of many npm packages. A solo developer creates a useful tool, it gains traction, but as demands grow, the maintainer burns out. Suddenly, your project depends on an unmaintained package, and you\\u2019re left scrambling for alternatives.\"), mdx(\"h3\", {\n    \"id\": \"business-pressures-vs-developer-experience\"\n  }, \"Business Pressures vs. Developer Experience\"), mdx(\"p\", null, \"In most organizations, business owners care about features, not developer experience. The pressure to deliver \\u201Cjust one more feature\\u201D often overrides the need for refactoring or technical debt management. If you don\\u2019t carve out time for refactoring in your sprints, \\u201Clater\\u201D never comes. As a team lead or architect, it\\u2019s your responsibility to build strong foundations and advocate for sustainable practices.\"), mdx(\"h2\", {\n    \"id\": \"case-studies--real-world-examples\"\n  }, \"Case Studies & Real-World Examples\"), mdx(\"h3\", {\n    \"id\": \"stuck-in-the-trough-the-angularjs-saga\"\n  }, \"Stuck in the Trough: The AngularJS Saga\"), mdx(\"p\", null, \"AngularJS was once the darling of frontend development. But as its limitations became clear, Google released Angular (v2+), a complete rewrite. The migration path was so painful that many teams abandoned Angular altogether, switching to React or Vue. Those who stuck with AngularJS faced mounting technical debt and dwindling community support.\"), mdx(\"h4\", {\n    \"id\": \"code-example-angularjs-to-angular-migration\"\n  }, \"Code Example: AngularJS to Angular Migration\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// AngularJS controller\\napp.controller('MainCtrl', function($scope) {\\n  $scope.message = 'Hello, world!';\\n});\\n\\n// Angular (v2+)\\n@Component({\\n  selector: 'app-main',\\n  template: `<h1>{{ message }}</h1>`\\n})\\nexport class MainComponent {\\n  message = 'Hello, world!';\\n}\\n\")), mdx(\"p\", null, \"The architectural shift required a complete rewrite, not just a refactor. Many businesses underestimated the cost and impact.\"), mdx(\"h3\", {\n    \"id\": \"the-v2-v3-v4-rewrite-trap\"\n  }, \"The v2, v3, v4 Rewrite Trap\"), mdx(\"p\", null, \"If you don\\u2019t address foundational issues during a rewrite, you\\u2019ll soon be talking about v3, v4, and beyond. Each rewrite brings more pain, more technical debt, and more resistance from stakeholders.\"), mdx(\"h4\", {\n    \"id\": \"example-breaking-changes-in-svelte\"\n  }, \"Example: Breaking Changes in Svelte\"), mdx(\"p\", null, \"Svelte\\u2019s early versions saw significant API changes. Teams that adopted Svelte at v1 or v2 faced major rewrites as the framework matured. Only those who waited for stability (v3+) avoided the churn.\"), mdx(\"h3\", {\n    \"id\": \"open-source-sustainability-analysis\"\n  }, \"Open Source Sustainability Analysis\"), mdx(\"p\", null, \"Let\\u2019s analyze the health of a popular open source project using a simple script:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// Check contributor count and issue activity\\nconst fetch = require('node-fetch');\\n\\nasync function checkRepoHealth(repo) {\\n  const res = await fetch(`https://api.github.com/repos/${repo}`);\\n  const data = await res.json();\\n  console.log(`Stars: ${data.stargazers_count}`);\\n  console.log(`Open Issues: ${data.open_issues_count}`);\\n  console.log(`Forks: ${data.forks_count}`);\\n}\\n\\ncheckRepoHealth('facebook/react');\\n\")), mdx(\"p\", null, \"A healthy project has many contributors, active issue resolution, and regular releases. Solo-maintainer projects often lack these signals.\"), mdx(\"h2\", {\n    \"id\": \"product-lifecycle-management-plm-and-technology-adoption\"\n  }, \"Product Lifecycle Management (PLM) and Technology Adoption\"), mdx(\"h3\", {\n    \"id\": \"plm-principles-in-software\"\n  }, \"PLM Principles in Software\"), mdx(\"p\", null, \"PLM isn\\u2019t just for hardware. In software, it means managing the entire lifecycle: conception, design, realization, service, and disposal. Applying PLM principles helps teams avoid the pitfalls of hype-driven adoption.\"), mdx(\"h4\", {\n    \"id\": \"lifecycle-stages\"\n  }, \"Lifecycle Stages\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Conceive\"), \": Define requirements, evaluate risks, and plan for long-term viability.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Design\"), \": Develop prototypes, test concepts, and validate assumptions.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Realize\"), \": Build, deploy, and deliver the product. Plan for maintenance and upgrades.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service\"), \": Support, maintain, and eventually retire the product.\")), mdx(\"h3\", {\n    \"id\": \"integration-with-business-processes\"\n  }, \"Integration with Business Processes\"), mdx(\"p\", null, \"PLM requires cross-functional collaboration. Marketing, engineering, and support must work together to ensure the product\\u2019s success. In software, this means integrating project management, CI/CD pipelines, and customer feedback loops.\"), mdx(\"h4\", {\n    \"id\": \"example-plm-workflow-in-software\"\n  }, \"Example: PLM Workflow in Software\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Specification\"), \": Gather requirements from stakeholders.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Design Freeze\"), \": Lock down architecture before implementation.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Launch\"), \": Deploy to production, monitor performance.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service\"), \": Provide updates, fix bugs, and plan for end-of-life.\")), mdx(\"h2\", {\n    \"id\": \"best-practices-for-technology-selection\"\n  }, \"Best Practices for Technology Selection\"), mdx(\"h3\", {\n    \"id\": \"evaluating-maturity-and-community-health\"\n  }, \"Evaluating Maturity and Community Health\"), mdx(\"p\", null, \"Before adopting a new technology, ask:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Is it at v1.0.0 or higher?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"How active is the community?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Are there regular releases and clear deprecation policies?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Is the documentation comprehensive?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Are there multiple maintainers or a single point of failure?\")), mdx(\"h4\", {\n    \"id\": \"example-framework-evaluation-checklist\"\n  }, \"Example: Framework Evaluation Checklist\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-markdown\"\n  }, \"- [x] Stable release (v1.0.0+)\\n- [x] Active contributors (10+)\\n- [x] Regular releases (monthly/quarterly)\\n- [x] Comprehensive documentation\\n- [x] Clear migration guides\\n- [x] Backward compatibility guarantees\\n\")), mdx(\"h3\", {\n    \"id\": \"building-in-time-for-refactoring-and-technical-debt-management\"\n  }, \"Building in Time for Refactoring and Technical Debt Management\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Refactoring isn\\u2019t optional\\u2014it\\u2019s essential.\"), \" Include refactoring in your sprints, make sure you always give your self time for proper code maintenance, \\u201Clater\\u201D never comes. You will always have to pay for it later or simply your project will be dropped as your mighty \\u201Cvelocity\\u201D drops. It\\u2019s devloper and architect reposibility to write and maintain clean code. Your business overlords do not care about the code, they only care about the features.\"), mdx(\"h4\", {\n    \"id\": \"example-technical-debt-tracking\"\n  }, \"Example: Technical Debt Tracking\"), mdx(\"p\", null, \"Use tools like SonarQube or CodeClimate to quantify technical debt. Set thresholds and enforce them in your CI/CD pipeline.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yaml\"\n  }, \"# Example: SonarQube Quality Gate\\nqualityGate:\\n  conditions:\\n    - metric: 'code_smells'\\n      operator: '<'\\n      value: 100\\n    - metric: 'duplicated_lines_density'\\n      operator: '<'\\n      value: 5\\n\")), mdx(\"h3\", {\n    \"id\": \"investing-in-solid-teams-and-well-supported-projects\"\n  }, \"Investing in Solid Teams and Well-Supported Projects\"), mdx(\"p\", null, \"A strong team is your best defense against hype-driven failure. Invest in training, encourage open source contributions, and choose projects with robust governance.\"), mdx(\"h2\", {\n    \"id\": \"common-pitfalls--how-to-avoid-them\"\n  }, \"Common Pitfalls & How to Avoid Them\"), mdx(\"h3\", {\n    \"id\": \"feature-driven-development-traps\"\n  }, \"Feature-Driven Development Traps\"), mdx(\"p\", null, \"Focusing solely on features leads to brittle codebases and mounting technical debt. Balance feature development with refactoring and architectural improvements.\"), mdx(\"h3\", {\n    \"id\": \"ignoring-refactoring-needs\"\n  }, \"Ignoring Refactoring Needs\"), mdx(\"p\", null, \"If you postpone refactoring, you\\u2019ll never get to it. Make it a first-class citizen in your development process.\"), mdx(\"h3\", {\n    \"id\": \"underestimating-the-cost-of-technical-debt\"\n  }, \"Underestimating the Cost of Technical Debt\"), mdx(\"p\", null, \"Technical debt compounds over time. Track it, manage it, and pay it down regularly.\"), mdx(\"h4\", {\n    \"id\": \"example-refactoring-pain-points-plan-for-the-future-not-just-the-present\"\n  }, \"Example: Refactoring Pain Points, plan for the future, not just the present.\"), mdx(\"p\", null, \"A simple change in a codebase and approach could mean life and death of your project. \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// Legacy code with tight coupling\\nfunction processOrder(order) {\\n  // ...\\n  paymentGateway.charge(order.amount);\\n  // ...\\n}\\n\\n// Refactored for testability\\nfunction processOrder(order, paymentGateway) {\\n  // ...\\n  paymentGateway.charge(order.amount);\\n  // ...\\n}\\n\")), mdx(\"p\", null, \"Decoupling dependencies makes future changes easier and reduces risk.\"), mdx(\"h2\", {\n    \"id\": \"advanced-concepts\"\n  }, \"Advanced Concepts\"), mdx(\"h3\", {\n    \"id\": \"quantifying-technical-debt\"\n  }, \"Quantifying Technical Debt\"), mdx(\"p\", null, \"Technical debt isn\\u2019t just a metaphor\\u2014it can be measured. Use static analysis tools, code metrics, and regular audits to quantify debt and prioritize remediation.\"), mdx(\"h4\", {\n    \"id\": \"example-cyclomatic-complexity\"\n  }, \"Example: Cyclomatic Complexity\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"function calculate(a, b, op) {\\n  if (op === '+') return a + b;\\n  else if (op === '-') return a - b;\\n  else if (op === '*') return a * b;\\n  else if (op === '/') return a / b;\\n  else throw new Error('Unknown operator');\\n}\\n\")), mdx(\"p\", null, \"High cyclomatic complexity signals code that\\u2019s hard to test and maintain. Refactor to reduce complexity.\"), mdx(\"h3\", {\n    \"id\": \"organizational-strategies-for-sustainable-tech-adoption\"\n  }, \"Organizational Strategies for Sustainable Tech Adoption\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Concurrent Engineering\"), \": Work in parallel across teams to reduce lead times and improve communication.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Role-Specific UIs\"), \": Tailor tools to user expertise to improve adoption and reduce errors.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Change Management\"), \": Prepare stakeholders for the realities of tech adoption, including refactoring and migration costs.\")), mdx(\"h3\", {\n    \"id\": \"plm-integration-and-concurrent-engineering-workflows\"\n  }, \"PLM Integration and Concurrent Engineering Workflows\"), mdx(\"p\", null, \"Integrate PLM tools with your development workflow. Use collaborative platforms (e.g., Jira, Confluence, GitHub) to manage requirements, track changes, and coordinate releases.\"), mdx(\"h4\", {\n    \"id\": \"example-plm-driven-release-management\"\n  }, \"Example: PLM-Driven Release Management\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Kickoff\"), \": Define goals and stakeholders.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Design Freeze\"), \": Lock architecture and APIs.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Launch\"), \": Deploy and monitor.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service\"), \": Maintain, support, and plan for end-of-life.\")), mdx(\"h2\", {\n    \"id\": \"conclusion\"\n  }, \"Conclusion\"), mdx(\"p\", null, \"The hype train is seductive, but it\\u2019s fraught with risk. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"By understanding the Hype Cycle, applying PLM principles, and investing in solid teams and mature technologies, you can avoid the pitfalls of hype-driven adoption.\"), \" Track technical debt, prioritize refactoring, and build for the long term. \"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Remember: any project that cannot be modified will not be modified.\"), \" Don\\u2019t let your next big idea become the next big rewrite. Stay vigilant, stay pragmatic, and beware of the hype train.\"), mdx(\"hr\", null), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Actionable Advice:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Evaluate new technologies critically\\u2014don\\u2019t be swayed by hype alone.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Invest in mature, well-supported frameworks and teams.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Make refactoring and technical debt management a priority.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use PLM principles to guide technology adoption and lifecycle management.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Always plan for change\\u2014because change is inevitable.\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["TS","JS"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEpUlEQVQ4y0VVWWxbVRB9cZw6ix3v8RZjO5sSZXEWk8SNE8dLk9jxlsXOaqfZNylUUZGapDSiVKJVVSAghZbfNi1ClLRiFb9ICIT4QIJKVPBbUNMqFPg/zNyq4uPoPt8777wzM+eOpROKE5DyJOTn50OWL4MkSQIymQzyAjnkcjlKS1UwGo0oVZfScylUKhUU9F5hYSFBARWdq+mMY6WioiK4XE56wYCysjK43W40NDRAr9ejuLgYSqVSEOp0Omi1WhGn02nFfnFxEYoI7qYmeteIkpISEifLQ3m5DW1trejq6sLI8Aj29/eRzU4LNVqNBhoCE+oNekGm0WqEYgardbubUF9fj8KiQkj58nzB3EzKTCYTaqqrkU6nYbGYab9YqLZYLXA6nXA4HKitrRVwuVyw2WwwGAyUrlpkxCWQFFSD5wd6QcypKJUlAlpSYzabRQlCoTDC4TCGUkOYnppCenQUPp8PVVVVQikTckkkroHJVCYIuGZcXCblNFldE9UnHO5DZmwcc7NzWF5awuLiApYWFwVxLBZHXV0d7HY7rFYbKVQoBBGnx0QqlVKsLxrEymZyM1hfX8dr58/j+vv7eHfvHbz91jVsb2/h9MwMRkfTqKcsqqtrILE1XpBwLbjr3IwaOoxEosgR2ZlXzuDK5cs4uHULH965jYObN3Hn9gE+uHEdu7u72NjYwMT4hKirVFBQgBJKl7vF9mBCtkB3dw8ymTFsbm5iZ3sHiXgca6truH/vEA9+/gm/P3wg8OXnn9HH3qSzVbQ0t5Bt8vJEM9hTrJQJy6lJsVgMKysrePXsWfj9fvH1yspKUbvjJ3/gn7+O8PfxYzw9eoRP798TcaFQCBJ7x+v1UnAFWC03h+0xMjyMrXPnxGq3lyOVSolmjGUyOLz7EZ4R2fGTPwXxjz98h4uvX0SUSiTxdcvlckKynDzJhBaLhRqRxe6FCwgGg6KmbJ/Gxkakkkmq6Qa+/uoLPH38CP8+O8L3336DS29cQmQg8jxlDnaRcTldTp/Nyp1lVR6PB7Ozs0gmEmhv70A0GsXK8hLe29vDb1RDTvnwk7vY2dqGt7OTfViIPJkEpapEgH/zEOj0dsBV4UQZebSvv0/cnkQyjqXlRaH+6tUrePjrL0T2MW5Qt1cpQ54JUqutAw2GFrhNHkIbmgiNxla0WNrhKfeK52bzy+hw+DDUmUasLQWvqxtzg8uYjy5jvDeLiUAW4cYIxZPCvsoEMu1ZDDWPY7hlAomGNNIeulqeaaTcY2I/2ZRBihCrH0G0bggh5yB85pBAj/UUugkB+wDCtC8FXRFke+eRC8xjJkhd9GYx3pVDpnMak77TmPbPYWFgVeznehfEXsAxgJArinDFoFgZQWdEQDpVHYP/pT4EaZMDT1oD6HX0I+AcgM8WEuixk4ryME5aAmINuAbQ6+yH39H3/0rgVVpZWsP87CKS8SH0+Pxoa/FgdDiNLq8PRn0ZTEYzaqpqxarT6GEz22AlWExWGHRGqFUalCrVAvwsTU5NIp6Ik0WS6A34aRxVilvB1jHSFbTSLOTByn8Vej0NWb1WDFm1Ri0cweOPh/QJRYGI+Q9R06UhrTP3/QAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/a1946/hypetrain.png","srcSet":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/5b37e/hypetrain.png 236w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/49058/hypetrain.png 472w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/a1946/hypetrain.png 944w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/6050d/hypetrain.png 1200w","srcWebp":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/99fbb/hypetrain.webp","srcSetWebp":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/77392/hypetrain.webp 236w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/1f177/hypetrain.webp 472w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/99fbb/hypetrain.webp 944w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/9000d/hypetrain.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%20181v182h3c2%200%203%200%202-1l4-1h4l9%201%203%202%201%201c-1%201%200%201%201%201%202%200%203-2%200-2v-1a927%20927%200%200010-2l4-1%205%201-5%203-7%202-1%201-4%202c-18%208-29%2014-28%2015l1%202-2%204c0%203%200%203%202%203%204-2%205%200%201%202l-3%203%206-3c4-2%205-2%205-1v2c2%200%203-2%202-2-1-1%200-1%202-1h4l1-1%201%201v2l-2%202-4%203a119%20119%200%200027-1l-1-1h-3c-2-1-2-1%202-1h3v-1l1-1%201-2v1l1%201%202-2v-2l1%201h3c1%201%202%202%203%201v-3c2-2%202-2%202%200h3l3%202%204%201c1%201%201%201%203-1l6-1c5%200%206%201%200%205l-5%204a17164%2017164%200%2000329-2l1-200V0h-82a799%20799%200%2000-84%201L117%200H0v181M349%2024c-3%204-3%2013-2%2018%203%208%2013%2015%2021%2014l3-1%202-1h-2l-3-1-3-1-3-1-1-2c-3%200-5-1-4-2l-1-1-1-2-2-2v-1c0-2%200-2-1-1-1%202-1%202-2-2l-1-6a1106%201106%200%20010-8M85%2035c-11%202-23%207-14%205%203%200%203%202-1%203-3%201-4%203-1%201h4c1%200%202-1%201-3%200-2%200-2%202-1l1%202v1h1l2-1h1c0-2%204-2%206%200%202%200%202-2%201-4s-1-2%202-2l3%202h2l1%201v1h2l2%201%201%201-2%201c-4-1-8%200-6%202l2%201h-3l2%202c1%200%202%200%201%201h1v3l1-1%203-1c3%200%203%200%201%201-4%200-5%202-2%202%202%200%202%200%201%201v2l1%201c0%202%200%203%202%202l1%202-2%202-2%202-2%201c-3%200-5%203-3%204l6%201%201%201%204%202%202-1c-1-2%200-2%201-2%202%200%204%202%202%202l-1%202%205-5%2015-14c5-3%2010-6%209-7-1-2-15-10-21-12s-28-4-33-2m163%2059l-9%201-7%202%2011-1c12-2%2026-3%2026-1l-5%201c-4%200-5%200-4%202%200%202%200%202%201%201%200-2%201-2%205-2l5-1c-2-2%2016%201%2029%205l7%202a116%20116%200%2000-59-9m26%207h-3l-3%201c-2%200-3%200-2-1h-3c-1%202-1%203%206%203%204%200%206%200%205-1l1-1%203%201-1%201c-1%201-1%201%202%201h4l1-1%202%202h-6c-11-1-24-1-25%201h-2l3-3c3-2%203-3-2-3-6%200-26%205-26%206h2l1%201-1%201-1%202-1%202-3%201v-1c2-2%201-3-1-1-2%200-2%201-1%202s-1%202-6%202l-2%201-1%201c-3%201-3-1-1-2%203-1%204-3%202-3l-2%201-1%201c-1%201-2%200-1-1h-1c-2%202-2%202-1%203l2%204-1%202-2-2-2-3-2%202c-1%201-2%202-3%201l2-2%203-2-3%201-4%201-1%202-1%201c-2-1-3%200-2%201h2l1%201v1h1l2-1v2c-2%200-2%201-1%201l-3%202-1-1-1-2-1%201h-1v1l-1%201-3%201c-2%202-2%202%200%203l1%201c-1-1%200-2%202-3%203-1%204-1%202%201-2%201-2%202-1%202v1c-1%202-1%202%201%203%201%201%201%201-1%201l-2%201-1%201v-2c1-1%201-1%200%200s-2%201-2-1l2-2h1l-2-1h-1l-1%201h-1l-1%201v-2l-1-1v3c0%202%200%202-1%201h-1v2c-1%201-7%209-7%207l-6-2%202%202%203%203h-1l-2-1c-2%200-2%200-1%201%202%200-2%206-4%206-2-1-1%201%201%203l2%202h-6c0-2-1-2-1-1l-1%201h-2l1%201c1%200%202%201%201%202l-2-1c-1-1-1-1-1%201l-1%204c-2%202-5%2011-4%2012l-1%201-1-2c0-7-5%2012-6%2025%200%209%200%209%202%2011l1%201h-8l3%201%204%202%203%201h1c0%202-4%203-5%201v7c-2%201-3%205-1%205l1-1v-2c1%200%203%208%202%2011s-1%202-1-2c0-3%200-3-1-2l-1%203v1c-2%200-2-1-2-3s-2-1-4%201h-2l3-3%202-2-2%201h-2l1-2%203-1c1-2%201-2-2-2s-4%201-4%202h-1l-1-1c-1%200-2%200-2-2l3-1c3%201%205%200%203-1h1l3-1h-1l-2-1c0-2-8-2-8-1l-2%201c-2-1-2%200-2%202%200%204-1%204-1-1-1-4-1-4%201-3v-1c-2-2-2-2%204-1l8%201%205-2-1-1c-4%200-6%200-5-1%201%200%202-1%201-2h-1l-2%201%201-1c1-2%201-2-6-2-6%200-7%200-7-2-1-1-1%200-1%202l1%203%201-1c-1-1%200-1%201-1%202%200%202%200%201%201s-1%201%201%201c3%200%202%201-2%201-2%201-2%201-2%205a84%2084%200%20004%2022l5%2016v-3c-1-2-1-2%201-1s2%201%201%202v1l1%202%201%203v1l-2-2h-1l5%2010%201%201v1l1%201%201%203c1-2%201-6-1-7s-2-6%200-6l1-3-1-3v-1l1-2c1-3%202-4%207-7%205-2%206-3%206-6l1-5h1l10%201c6%200%208-1%205-1h-6l-1-7-2-8v-1c-2-1-1-6%201-7%201-1%201-1%201%202s1%2011%203%2014l2%202c1%200%202%200%201-1l-1-2c-2%200-2-7-1-8v-2c-2-1-1-7%202-9l1-3%203-18c1-2%201-2%201%201v5l1-2%201-3c1-1%200-4-1-4l-1-1h2l1%202%201%201%201-3c0-1%200-2%201-1l3-1c4-3%209-1%209%204%200%202%200%202%202%202%202-1%202-1%202%201l1%202%203%201-1-2-2-3c0-2-3-6-5-7-2%200-2-1%200-5a36%2036%200%200137-16l-3%201c-2%200-3%200-2%201l-2%201c-2%200-3%201-1%202h2v2l-1%201h2c1%200%205%203%204%204l1%201c1-1%202%200%202%201l1%201h5l-1-1c-2%200-1-2%201-2l2%201%202%204%202%202c-1%201%200%201%201%201%202-1%202%200%202%202h1l1%201c-1%201%200%201%201%201v1c-1%201-1%201%201%201l2%203c0%202%200%202%201%201%201-2%201-2%202%200l-1%206c-2%203-2%204%200%205%201%201%201%2012-1%2011l-1%201-9-2-8-4-1-3h-2v2c-2%200-4-3-4-4l-1-1-1%201-2%201-6-2-6-1h-2c0%201-1%202-4%202-7%200-6%201%202%201%209%201%2015%203%207%202h-21l1%202%203%202h3l-3-1-2-2c0-2%202-1%205%201s4%203%203%201l1-1%203%201-1%201h1c2%200%202%200%201%201v1h2c0%201%205%202%207%201h1s4%202%209%202c14%203%2022%206%2024%208l2%201h5v5l1-2c0-2%200-2%202-2l8%203c8%203%2010%206%204%205h-3c0%202%200%202%201%201h2l1%201%201%201c1%201%200%201-1%202l3%201%205%201h-5l-4%201-3%201c-2%200-3%200-2-1l-5-1-6-1-2%201%206%201%205%201-3%201c-4%200-13%201-12%202l-2%201c-3%200-4%203-2%204h-3c-3%200-4%200-2%201s2%201-3%201c-4%201-7%203-4%203l2%201c1%201%200%201-2%201-2-1-3%200-3%201v1l2-1h1l2%202c2%200%202%200%201-1-2-1-2-1%200-1%202%201%203%200%204-1l2-1h2c1-1%201-1-1-2-1-1-1-1%201-1%201-1%202%200%202%201l2%202c2%200%203%200%202-2%200-2%200-2%201%200%201%201%201%201%201-1v-2l1%202c1%202%201%202%201%200l1-2%201%202c-1%202%201%201%202-1h1l2%201c2%200%203%200%203-2-1-1-1-1%200%200h5l16-1a494%20494%200%2001-52%2020l-4%203-5%201-3%202-2%201-2%202-1%201c-2%200-3%200-2%201l-1%201h-1c-1%202%205%202%2010%201%201-1%201-1%200%200s0%201%204%201l9-2%2011-6v1l1%201%203-1%201-1h-1c-4%201-2-1%203-3%205-3%205-3%205-1l1%202%201-1v-3l2-1%202%201%201-1h2l3-1v-1c-2%200-2%200-2-2l3-1c1%200%202%200%201%201l1%201h1c-1%202%200%201%203-1l1-2c-2%200-2%200-1-1h2l6-2c5-4%207-5%207-3l1%201c1%201-4%207-5%206l-2%203c-1%202-2%203-3%202l-1%202c0%203-3%206-4%205-1-2-3%201-2%202l-1%203-2%203h28a146%20146%200%200029-1h20l2-1c0-1%201-1%201%201h9v-1l1-3%203-5c3-5%205-6%203-2v2l4-7c-1-3%200-4%201-3h1c-1-1%200-5%201-8%201-4%202-5%202-3%201%205%205-13%205-18v-2c1%203%201%203%202-3v-6l-1%203v-12c0-12%200-16-1-15v-12l1-4-1%203v-2l-1-8v2c0%205-1%205-2%200-1-2-1-2-1%201l1%208v10l-2%205%201-7c0-8-1-14-2-13v-2l-1-5v-10c-1-5-3-10-5-12l-1-2c1-2-2-7-3-7v-1l-1-1-2-3-3-3%201%203v2h-1l-1-1v2l2%204h-3v1c2%200%202%201%200%202h-1l-1-2c-1%200-1%201%201%204%201%203%201%203%203%202%202-2%204%200%203%203-1%201-1%201-2-1h-2c0%203%201%205%202%204v2h2l-1%202v1l1%203v4h1c2%200%203%202%202%208l1%202%202%205c1%207%201%208-3%208-2%200-2-1-2-5l2-5v-2l-3-6c-2-5-3-6-4-5-2%200-2%200-1-1s2-2%201-3-4-1-4%201h-1v-8l2%202c1%202%201%203%202%202l-4-8c-4-9-6-10-6-9l-1-1-1-2-2-2-2-3-1-3-3%203-2%203-1%202-1-1v-1l-1-2c0-2%200-2-1-1-2%201-5-1-3-2l-1-2c-2-1-2-2-1-3%202-1%202-1%203%201s2%203%203%202l1%201%201%201v-4l-1-2-2-1h-1l-4-1-4-2v2c3%202%201%205-2%204l-2%201h-2v-1c3%200%202-1-5-5l-3-3c1-1%204%200%206%202%205%204%206%204%206%201l1-2%201-1%203%201%202%201-3-3-1-1-2-1-1-1%201-1v-1h-3v1l1%201%201%202-1%203h-1v-2l-1-1c1%200-2-3-6-5-7-4-8-7-3-4%203%202%202%200-1-2s-6-2-4%200-1%201-8-2c-8-3-8-5%200-2l1-1c0-2-17-8-23-8l-2-1-1-1h-1c-1-1-1-1-2%201m-6%209c-1%202-2%203-4%203s-2%200-1-1v-3l-2%202-2%202v-2h-3l-1%201c-1%201-2%200-4-1l-2-1c1%202%200%205-2%205l-1-2-1-1v3l-1%201h-1v3c-2%201-2%201%201%201h3l-1%201h-1l-2%201c-3-1-6%202-3%202%203%201%207%200%207-1l1-1%203-1c1-1%201-1-1-1-2%201-3%200-1-1%201-1%200-1-1-1l-2-1c0-1%204-2%2013-2l8-1-8%202c-9%201-11%202-6%202%201%200%202%200%201%201-3%201-1%202%205%202l5-1h3l4-1h3c0-1%204-1%205%201h3l1%201-7%201-6%201%209%201c5%200%208%200%207-1l-2-1%203-1h3l-3-1-3-1-1-1h-2v-1l2-1%202-1c2%200%203%200%202%202l1%201%202-1h3c3%201%207%200%205-1h-2c-1%201-1%201-1-1s0-2-1-1-4%201-5-1h-7c-2%200-3%200-2-1l-1-1v-3l-1%202-1%201-4%201c-2%202-1%200%201-3l2-2h-2l-2%201-1%203c-1%203-1%202-2-2-1-2-1-2-1%201m-41%2012l-7%204-4%202%202-2c2-1%201-4-1-4v3l-1-1-2-1v3c2%203%202%203%200%203l-1%201h-2l-2-1%201%202c2%200%202%201-1%203-2%201-4%202-5%201v1l-1%202-2%202h1c3-2%202%201%200%204-2%202-1%204%201%203h2v-1l-1-2%202%201c0%201%205-2%2011-8%203-3%208-5%209-5l1-1h2l2-1v-1l1-1c0-1%201-2%203-2l2-3v-1l1-1c-1%200-10%203-16%207l-3%203c2-1%203%201%200%201h-1c1-2-1-1-4%202-4%202-6%203-5%201l18-11%204-3-4%201m-33%2021l1%202h-1l-1%201c-2%203-3%202-3-1%200-2%200-2-1%200l-1%203c-1%201%200%202%201%203v1c-1%200-2%201-1%202l-1%203c-3%202-2%203%200%202h3l2-1%201-2%201-2%201-1c1%201%201%200%201-1s-1-1-3%202l-3%202c-1-2%201-5%203-4v-2l1-1h1l1-1%201%202%201%202v1c-2%203-1%203%202%201%202-2%203-5%201-3l-1-4h-1v-1h-1l1-2%201-3-1%201h-4c-3-1-4-1-1%201m-29%2020l-2%202c-1%200-2%201-1%202l-1%202-1-3-1%201v4l1%201c2-1%201-1-1%202l-2%205v1c-1-1-1-1-1%201v2l-1%202v3l-2%202h2v2c-2%202-2%2012%200%2012l1-10%201-5%201-1c0-6%203-15%204-15l1-2%202-4%201-4-1-2v2M24%20213c-1%201-2%202%200%204h1c0-1%201-2%202-1v4l1%201v3l1-1%202%201%204%202%202%202c0%201-2%202-2%200l-2-1%201%203%201%202c0%201%202%205%204%206l-1%201c-2-1-3%200-1%202l2-1h2v2l-1%203v3l-1%203%202-3%202-1c0%203%203-1%203-3s0-3%201-2c0%203%202%202%204-2%204-7%202-18-4-24-6-5-18-7-23-3m155%2031c-1%202%201%204%202%202%201-1%2019%200%2019%201l-1%201a654%20654%200%2000-20%201c3%202%201%202-3%201-3-2-4-2-4%200l-2%201v-1c0-2-4-1-5%201l-3%201c-2%200-2%200%200-1l2-2-3%201h-3v1c2%202%204%202%2014%202l9%201c2%202%203%203%203%201v-1c2-1%204%202%204%204%200%201%201%202%203%202l15-3c2%200%203%200%203%202%201%201%201%201%201-1l1-4v3l1%202c2-2%204%201%202%202-3%202-1%206%202%207v-2h3l2-4v-6c2%200%202%200%200-2-1-3-2-3-7-1l-1-1c1-3-1-5-6-5l-6-1-6-1-5-1h-4c0-2-1-2-1-1h-4c-2-2-2-2-2%201M24%20323v7h4c5%200%209-4%206-7v-3c0-3-2-5-6-5h-4v8m165-4c-2%200-3%2015-1%2015l1-2%202-2c3%200%206-3%206-6%200-1-4-6-6-6l-2%201M54%20361l-6%203-7%202v1l-1%201-2%201-3%201s-10%203-9%204h-2v1c1%201%201%201-1%201h-1l-2%202-2%202c1%201%201%201-1%201h-1c1%201%201%201-1%201h-1v1l-3-1v-1H8c-1%201-1%201%201%201v2H6l-1%202c0%203%205%202%2010-1s11-4%207-2c-3%202%201%203%204%201l4-1%202%201-1%201-2%202c0%201%205-1%207-3h4l2-3-2%201h-2v-2l-1-1-2%201c1%201-2%202-9%200-6%200-6-1-4-2h4l1-1%201-2c1-1%203%200%202%202v1l2-1h1l1-1c1-2%2015-8%2015-6l-1%201-3%202c-2%202-3%203-4%202h-3c-2%201-2%201-1%202l2%201%201%201%203-1a170%20170%200%200032-17c-3-1-12%201-12%202h-2c0%202-6%206-8%206-4%200-3-2%202-4s5-2%204-3l-2-2-3%201m37%200l10%202%202%201h4v1l-1%202-1%201-1%204c0%203%200%203%202%203l4-1%201-1v-6c1-3%201-3-1-3-2%201-2-1%200-2%201-1%201-1-1-1l-4%202c-2%200-2%200-1-1%200-2-3-3-5-1h-1l-5-1c-2%200-3%200-2%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEpUlEQVQ4y0VVWWxbVRB9cZw6ix3v8RZjO5sSZXEWk8SNE8dLk9jxlsXOaqfZNylUUZGapDSiVKJVVSAghZbfNi1ClLRiFb9ICIT4QIJKVPBbUNMqFPg/zNyq4uPoPt8777wzM+eOpROKE5DyJOTn50OWL4MkSQIymQzyAjnkcjlKS1UwGo0oVZfScylUKhUU9F5hYSFBARWdq+mMY6WioiK4XE56wYCysjK43W40NDRAr9ejuLgYSqVSEOp0Omi1WhGn02nFfnFxEYoI7qYmeteIkpISEifLQ3m5DW1trejq6sLI8Aj29/eRzU4LNVqNBhoCE+oNekGm0WqEYgardbubUF9fj8KiQkj58nzB3EzKTCYTaqqrkU6nYbGYab9YqLZYLXA6nXA4HKitrRVwuVyw2WwwGAyUrlpkxCWQFFSD5wd6QcypKJUlAlpSYzabRQlCoTDC4TCGUkOYnppCenQUPp8PVVVVQikTckkkroHJVCYIuGZcXCblNFldE9UnHO5DZmwcc7NzWF5awuLiApYWFwVxLBZHXV0d7HY7rFYbKVQoBBGnx0QqlVKsLxrEymZyM1hfX8dr58/j+vv7eHfvHbz91jVsb2/h9MwMRkfTqKcsqqtrILE1XpBwLbjr3IwaOoxEosgR2ZlXzuDK5cs4uHULH965jYObN3Hn9gE+uHEdu7u72NjYwMT4hKirVFBQgBJKl7vF9mBCtkB3dw8ymTFsbm5iZ3sHiXgca6truH/vEA9+/gm/P3wg8OXnn9HH3qSzVbQ0t5Bt8vJEM9hTrJQJy6lJsVgMKysrePXsWfj9fvH1yspKUbvjJ3/gn7+O8PfxYzw9eoRP798TcaFQCBJ7x+v1UnAFWC03h+0xMjyMrXPnxGq3lyOVSolmjGUyOLz7EZ4R2fGTPwXxjz98h4uvX0SUSiTxdcvlckKynDzJhBaLhRqRxe6FCwgGg6KmbJ/Gxkakkkmq6Qa+/uoLPH38CP8+O8L3336DS29cQmQg8jxlDnaRcTldTp/Nyp1lVR6PB7Ozs0gmEmhv70A0GsXK8hLe29vDb1RDTvnwk7vY2dqGt7OTfViIPJkEpapEgH/zEOj0dsBV4UQZebSvv0/cnkQyjqXlRaH+6tUrePjrL0T2MW5Qt1cpQ54JUqutAw2GFrhNHkIbmgiNxla0WNrhKfeK52bzy+hw+DDUmUasLQWvqxtzg8uYjy5jvDeLiUAW4cYIxZPCvsoEMu1ZDDWPY7hlAomGNNIeulqeaaTcY2I/2ZRBihCrH0G0bggh5yB85pBAj/UUugkB+wDCtC8FXRFke+eRC8xjJkhd9GYx3pVDpnMak77TmPbPYWFgVeznehfEXsAxgJArinDFoFgZQWdEQDpVHYP/pT4EaZMDT1oD6HX0I+AcgM8WEuixk4ryME5aAmINuAbQ6+yH39H3/0rgVVpZWsP87CKS8SH0+Pxoa/FgdDiNLq8PRn0ZTEYzaqpqxarT6GEz22AlWExWGHRGqFUalCrVAvwsTU5NIp6Ik0WS6A34aRxVilvB1jHSFbTSLOTByn8Vej0NWb1WDFm1Ri0cweOPh/QJRYGI+Q9R06UhrTP3/QAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/3ddd4/hypetrain.png","srcSet":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/078a8/hypetrain.png 163w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/e56da/hypetrain.png 327w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/3ddd4/hypetrain.png 653w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/c5cc7/hypetrain.png 980w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/6050d/hypetrain.png 1200w","srcWebp":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/0acdf/hypetrain.webp","srcSetWebp":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/ac59e/hypetrain.webp 163w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/7660b/hypetrain.webp 327w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/0acdf/hypetrain.webp 653w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/75470/hypetrain.webp 980w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/9000d/hypetrain.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%20181v182h3c2%200%203%200%202-1l4-1h4l9%201%203%202%201%201c-1%201%200%201%201%201%202%200%203-2%200-2v-1a927%20927%200%200010-2l4-1%205%201-5%203-7%202-1%201-4%202c-18%208-29%2014-28%2015l1%202-2%204c0%203%200%203%202%203%204-2%205%200%201%202l-3%203%206-3c4-2%205-2%205-1v2c2%200%203-2%202-2-1-1%200-1%202-1h4l1-1%201%201v2l-2%202-4%203a119%20119%200%200027-1l-1-1h-3c-2-1-2-1%202-1h3v-1l1-1%201-2v1l1%201%202-2v-2l1%201h3c1%201%202%202%203%201v-3c2-2%202-2%202%200h3l3%202%204%201c1%201%201%201%203-1l6-1c5%200%206%201%200%205l-5%204a17164%2017164%200%2000329-2l1-200V0h-82a799%20799%200%2000-84%201L117%200H0v181M349%2024c-3%204-3%2013-2%2018%203%208%2013%2015%2021%2014l3-1%202-1h-2l-3-1-3-1-3-1-1-2c-3%200-5-1-4-2l-1-1-1-2-2-2v-1c0-2%200-2-1-1-1%202-1%202-2-2l-1-6a1106%201106%200%20010-8M85%2035c-11%202-23%207-14%205%203%200%203%202-1%203-3%201-4%203-1%201h4c1%200%202-1%201-3%200-2%200-2%202-1l1%202v1h1l2-1h1c0-2%204-2%206%200%202%200%202-2%201-4s-1-2%202-2l3%202h2l1%201v1h2l2%201%201%201-2%201c-4-1-8%200-6%202l2%201h-3l2%202c1%200%202%200%201%201h1v3l1-1%203-1c3%200%203%200%201%201-4%200-5%202-2%202%202%200%202%200%201%201v2l1%201c0%202%200%203%202%202l1%202-2%202-2%202-2%201c-3%200-5%203-3%204l6%201%201%201%204%202%202-1c-1-2%200-2%201-2%202%200%204%202%202%202l-1%202%205-5%2015-14c5-3%2010-6%209-7-1-2-15-10-21-12s-28-4-33-2m163%2059l-9%201-7%202%2011-1c12-2%2026-3%2026-1l-5%201c-4%200-5%200-4%202%200%202%200%202%201%201%200-2%201-2%205-2l5-1c-2-2%2016%201%2029%205l7%202a116%20116%200%2000-59-9m26%207h-3l-3%201c-2%200-3%200-2-1h-3c-1%202-1%203%206%203%204%200%206%200%205-1l1-1%203%201-1%201c-1%201-1%201%202%201h4l1-1%202%202h-6c-11-1-24-1-25%201h-2l3-3c3-2%203-3-2-3-6%200-26%205-26%206h2l1%201-1%201-1%202-1%202-3%201v-1c2-2%201-3-1-1-2%200-2%201-1%202s-1%202-6%202l-2%201-1%201c-3%201-3-1-1-2%203-1%204-3%202-3l-2%201-1%201c-1%201-2%200-1-1h-1c-2%202-2%202-1%203l2%204-1%202-2-2-2-3-2%202c-1%201-2%202-3%201l2-2%203-2-3%201-4%201-1%202-1%201c-2-1-3%200-2%201h2l1%201v1h1l2-1v2c-2%200-2%201-1%201l-3%202-1-1-1-2-1%201h-1v1l-1%201-3%201c-2%202-2%202%200%203l1%201c-1-1%200-2%202-3%203-1%204-1%202%201-2%201-2%202-1%202v1c-1%202-1%202%201%203%201%201%201%201-1%201l-2%201-1%201v-2c1-1%201-1%200%200s-2%201-2-1l2-2h1l-2-1h-1l-1%201h-1l-1%201v-2l-1-1v3c0%202%200%202-1%201h-1v2c-1%201-7%209-7%207l-6-2%202%202%203%203h-1l-2-1c-2%200-2%200-1%201%202%200-2%206-4%206-2-1-1%201%201%203l2%202h-6c0-2-1-2-1-1l-1%201h-2l1%201c1%200%202%201%201%202l-2-1c-1-1-1-1-1%201l-1%204c-2%202-5%2011-4%2012l-1%201-1-2c0-7-5%2012-6%2025%200%209%200%209%202%2011l1%201h-8l3%201%204%202%203%201h1c0%202-4%203-5%201v7c-2%201-3%205-1%205l1-1v-2c1%200%203%208%202%2011s-1%202-1-2c0-3%200-3-1-2l-1%203v1c-2%200-2-1-2-3s-2-1-4%201h-2l3-3%202-2-2%201h-2l1-2%203-1c1-2%201-2-2-2s-4%201-4%202h-1l-1-1c-1%200-2%200-2-2l3-1c3%201%205%200%203-1h1l3-1h-1l-2-1c0-2-8-2-8-1l-2%201c-2-1-2%200-2%202%200%204-1%204-1-1-1-4-1-4%201-3v-1c-2-2-2-2%204-1l8%201%205-2-1-1c-4%200-6%200-5-1%201%200%202-1%201-2h-1l-2%201%201-1c1-2%201-2-6-2-6%200-7%200-7-2-1-1-1%200-1%202l1%203%201-1c-1-1%200-1%201-1%202%200%202%200%201%201s-1%201%201%201c3%200%202%201-2%201-2%201-2%201-2%205a84%2084%200%20004%2022l5%2016v-3c-1-2-1-2%201-1s2%201%201%202v1l1%202%201%203v1l-2-2h-1l5%2010%201%201v1l1%201%201%203c1-2%201-6-1-7s-2-6%200-6l1-3-1-3v-1l1-2c1-3%202-4%207-7%205-2%206-3%206-6l1-5h1l10%201c6%200%208-1%205-1h-6l-1-7-2-8v-1c-2-1-1-6%201-7%201-1%201-1%201%202s1%2011%203%2014l2%202c1%200%202%200%201-1l-1-2c-2%200-2-7-1-8v-2c-2-1-1-7%202-9l1-3%203-18c1-2%201-2%201%201v5l1-2%201-3c1-1%200-4-1-4l-1-1h2l1%202%201%201%201-3c0-1%200-2%201-1l3-1c4-3%209-1%209%204%200%202%200%202%202%202%202-1%202-1%202%201l1%202%203%201-1-2-2-3c0-2-3-6-5-7-2%200-2-1%200-5a36%2036%200%200137-16l-3%201c-2%200-3%200-2%201l-2%201c-2%200-3%201-1%202h2v2l-1%201h2c1%200%205%203%204%204l1%201c1-1%202%200%202%201l1%201h5l-1-1c-2%200-1-2%201-2l2%201%202%204%202%202c-1%201%200%201%201%201%202-1%202%200%202%202h1l1%201c-1%201%200%201%201%201v1c-1%201-1%201%201%201l2%203c0%202%200%202%201%201%201-2%201-2%202%200l-1%206c-2%203-2%204%200%205%201%201%201%2012-1%2011l-1%201-9-2-8-4-1-3h-2v2c-2%200-4-3-4-4l-1-1-1%201-2%201-6-2-6-1h-2c0%201-1%202-4%202-7%200-6%201%202%201%209%201%2015%203%207%202h-21l1%202%203%202h3l-3-1-2-2c0-2%202-1%205%201s4%203%203%201l1-1%203%201-1%201h1c2%200%202%200%201%201v1h2c0%201%205%202%207%201h1s4%202%209%202c14%203%2022%206%2024%208l2%201h5v5l1-2c0-2%200-2%202-2l8%203c8%203%2010%206%204%205h-3c0%202%200%202%201%201h2l1%201%201%201c1%201%200%201-1%202l3%201%205%201h-5l-4%201-3%201c-2%200-3%200-2-1l-5-1-6-1-2%201%206%201%205%201-3%201c-4%200-13%201-12%202l-2%201c-3%200-4%203-2%204h-3c-3%200-4%200-2%201s2%201-3%201c-4%201-7%203-4%203l2%201c1%201%200%201-2%201-2-1-3%200-3%201v1l2-1h1l2%202c2%200%202%200%201-1-2-1-2-1%200-1%202%201%203%200%204-1l2-1h2c1-1%201-1-1-2-1-1-1-1%201-1%201-1%202%200%202%201l2%202c2%200%203%200%202-2%200-2%200-2%201%200%201%201%201%201%201-1v-2l1%202c1%202%201%202%201%200l1-2%201%202c-1%202%201%201%202-1h1l2%201c2%200%203%200%203-2-1-1-1-1%200%200h5l16-1a494%20494%200%2001-52%2020l-4%203-5%201-3%202-2%201-2%202-1%201c-2%200-3%200-2%201l-1%201h-1c-1%202%205%202%2010%201%201-1%201-1%200%200s0%201%204%201l9-2%2011-6v1l1%201%203-1%201-1h-1c-4%201-2-1%203-3%205-3%205-3%205-1l1%202%201-1v-3l2-1%202%201%201-1h2l3-1v-1c-2%200-2%200-2-2l3-1c1%200%202%200%201%201l1%201h1c-1%202%200%201%203-1l1-2c-2%200-2%200-1-1h2l6-2c5-4%207-5%207-3l1%201c1%201-4%207-5%206l-2%203c-1%202-2%203-3%202l-1%202c0%203-3%206-4%205-1-2-3%201-2%202l-1%203-2%203h28a146%20146%200%200029-1h20l2-1c0-1%201-1%201%201h9v-1l1-3%203-5c3-5%205-6%203-2v2l4-7c-1-3%200-4%201-3h1c-1-1%200-5%201-8%201-4%202-5%202-3%201%205%205-13%205-18v-2c1%203%201%203%202-3v-6l-1%203v-12c0-12%200-16-1-15v-12l1-4-1%203v-2l-1-8v2c0%205-1%205-2%200-1-2-1-2-1%201l1%208v10l-2%205%201-7c0-8-1-14-2-13v-2l-1-5v-10c-1-5-3-10-5-12l-1-2c1-2-2-7-3-7v-1l-1-1-2-3-3-3%201%203v2h-1l-1-1v2l2%204h-3v1c2%200%202%201%200%202h-1l-1-2c-1%200-1%201%201%204%201%203%201%203%203%202%202-2%204%200%203%203-1%201-1%201-2-1h-2c0%203%201%205%202%204v2h2l-1%202v1l1%203v4h1c2%200%203%202%202%208l1%202%202%205c1%207%201%208-3%208-2%200-2-1-2-5l2-5v-2l-3-6c-2-5-3-6-4-5-2%200-2%200-1-1s2-2%201-3-4-1-4%201h-1v-8l2%202c1%202%201%203%202%202l-4-8c-4-9-6-10-6-9l-1-1-1-2-2-2-2-3-1-3-3%203-2%203-1%202-1-1v-1l-1-2c0-2%200-2-1-1-2%201-5-1-3-2l-1-2c-2-1-2-2-1-3%202-1%202-1%203%201s2%203%203%202l1%201%201%201v-4l-1-2-2-1h-1l-4-1-4-2v2c3%202%201%205-2%204l-2%201h-2v-1c3%200%202-1-5-5l-3-3c1-1%204%200%206%202%205%204%206%204%206%201l1-2%201-1%203%201%202%201-3-3-1-1-2-1-1-1%201-1v-1h-3v1l1%201%201%202-1%203h-1v-2l-1-1c1%200-2-3-6-5-7-4-8-7-3-4%203%202%202%200-1-2s-6-2-4%200-1%201-8-2c-8-3-8-5%200-2l1-1c0-2-17-8-23-8l-2-1-1-1h-1c-1-1-1-1-2%201m-6%209c-1%202-2%203-4%203s-2%200-1-1v-3l-2%202-2%202v-2h-3l-1%201c-1%201-2%200-4-1l-2-1c1%202%200%205-2%205l-1-2-1-1v3l-1%201h-1v3c-2%201-2%201%201%201h3l-1%201h-1l-2%201c-3-1-6%202-3%202%203%201%207%200%207-1l1-1%203-1c1-1%201-1-1-1-2%201-3%200-1-1%201-1%200-1-1-1l-2-1c0-1%204-2%2013-2l8-1-8%202c-9%201-11%202-6%202%201%200%202%200%201%201-3%201-1%202%205%202l5-1h3l4-1h3c0-1%204-1%205%201h3l1%201-7%201-6%201%209%201c5%200%208%200%207-1l-2-1%203-1h3l-3-1-3-1-1-1h-2v-1l2-1%202-1c2%200%203%200%202%202l1%201%202-1h3c3%201%207%200%205-1h-2c-1%201-1%201-1-1s0-2-1-1-4%201-5-1h-7c-2%200-3%200-2-1l-1-1v-3l-1%202-1%201-4%201c-2%202-1%200%201-3l2-2h-2l-2%201-1%203c-1%203-1%202-2-2-1-2-1-2-1%201m-41%2012l-7%204-4%202%202-2c2-1%201-4-1-4v3l-1-1-2-1v3c2%203%202%203%200%203l-1%201h-2l-2-1%201%202c2%200%202%201-1%203-2%201-4%202-5%201v1l-1%202-2%202h1c3-2%202%201%200%204-2%202-1%204%201%203h2v-1l-1-2%202%201c0%201%205-2%2011-8%203-3%208-5%209-5l1-1h2l2-1v-1l1-1c0-1%201-2%203-2l2-3v-1l1-1c-1%200-10%203-16%207l-3%203c2-1%203%201%200%201h-1c1-2-1-1-4%202-4%202-6%203-5%201l18-11%204-3-4%201m-33%2021l1%202h-1l-1%201c-2%203-3%202-3-1%200-2%200-2-1%200l-1%203c-1%201%200%202%201%203v1c-1%200-2%201-1%202l-1%203c-3%202-2%203%200%202h3l2-1%201-2%201-2%201-1c1%201%201%200%201-1s-1-1-3%202l-3%202c-1-2%201-5%203-4v-2l1-1h1l1-1%201%202%201%202v1c-2%203-1%203%202%201%202-2%203-5%201-3l-1-4h-1v-1h-1l1-2%201-3-1%201h-4c-3-1-4-1-1%201m-29%2020l-2%202c-1%200-2%201-1%202l-1%202-1-3-1%201v4l1%201c2-1%201-1-1%202l-2%205v1c-1-1-1-1-1%201v2l-1%202v3l-2%202h2v2c-2%202-2%2012%200%2012l1-10%201-5%201-1c0-6%203-15%204-15l1-2%202-4%201-4-1-2v2M24%20213c-1%201-2%202%200%204h1c0-1%201-2%202-1v4l1%201v3l1-1%202%201%204%202%202%202c0%201-2%202-2%200l-2-1%201%203%201%202c0%201%202%205%204%206l-1%201c-2-1-3%200-1%202l2-1h2v2l-1%203v3l-1%203%202-3%202-1c0%203%203-1%203-3s0-3%201-2c0%203%202%202%204-2%204-7%202-18-4-24-6-5-18-7-23-3m155%2031c-1%202%201%204%202%202%201-1%2019%200%2019%201l-1%201a654%20654%200%2000-20%201c3%202%201%202-3%201-3-2-4-2-4%200l-2%201v-1c0-2-4-1-5%201l-3%201c-2%200-2%200%200-1l2-2-3%201h-3v1c2%202%204%202%2014%202l9%201c2%202%203%203%203%201v-1c2-1%204%202%204%204%200%201%201%202%203%202l15-3c2%200%203%200%203%202%201%201%201%201%201-1l1-4v3l1%202c2-2%204%201%202%202-3%202-1%206%202%207v-2h3l2-4v-6c2%200%202%200%200-2-1-3-2-3-7-1l-1-1c1-3-1-5-6-5l-6-1-6-1-5-1h-4c0-2-1-2-1-1h-4c-2-2-2-2-2%201M24%20323v7h4c5%200%209-4%206-7v-3c0-3-2-5-6-5h-4v8m165-4c-2%200-3%2015-1%2015l1-2%202-2c3%200%206-3%206-6%200-1-4-6-6-6l-2%201M54%20361l-6%203-7%202v1l-1%201-2%201-3%201s-10%203-9%204h-2v1c1%201%201%201-1%201h-1l-2%202-2%202c1%201%201%201-1%201h-1c1%201%201%201-1%201h-1v1l-3-1v-1H8c-1%201-1%201%201%201v2H6l-1%202c0%203%205%202%2010-1s11-4%207-2c-3%202%201%203%204%201l4-1%202%201-1%201-2%202c0%201%205-1%207-3h4l2-3-2%201h-2v-2l-1-1-2%201c1%201-2%202-9%200-6%200-6-1-4-2h4l1-1%201-2c1-1%203%200%202%202v1l2-1h1l1-1c1-2%2015-8%2015-6l-1%201-3%202c-2%202-3%203-4%202h-3c-2%201-2%201-1%202l2%201%201%201%203-1a170%20170%200%200032-17c-3-1-12%201-12%202h-2c0%202-6%206-8%206-4%200-3-2%202-4s5-2%204-3l-2-2-3%201m37%200l10%202%202%201h4v1l-1%202-1%201-1%204c0%203%200%203%202%203l4-1%201-1v-6c1-3%201-3-1-3-2%201-2-1%200-2%201-1%201-1-1-1l-4%202c-2%200-2%200-1-1%200-2-3-3-5-1h-1l-5-1c-2%200-3%200-2%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEpUlEQVQ4y0VVWWxbVRB9cZw6ix3v8RZjO5sSZXEWk8SNE8dLk9jxlsXOaqfZNylUUZGapDSiVKJVVSAghZbfNi1ClLRiFb9ICIT4QIJKVPBbUNMqFPg/zNyq4uPoPt8777wzM+eOpROKE5DyJOTn50OWL4MkSQIymQzyAjnkcjlKS1UwGo0oVZfScylUKhUU9F5hYSFBARWdq+mMY6WioiK4XE56wYCysjK43W40NDRAr9ejuLgYSqVSEOp0Omi1WhGn02nFfnFxEYoI7qYmeteIkpISEifLQ3m5DW1trejq6sLI8Aj29/eRzU4LNVqNBhoCE+oNekGm0WqEYgardbubUF9fj8KiQkj58nzB3EzKTCYTaqqrkU6nYbGYab9YqLZYLXA6nXA4HKitrRVwuVyw2WwwGAyUrlpkxCWQFFSD5wd6QcypKJUlAlpSYzabRQlCoTDC4TCGUkOYnppCenQUPp8PVVVVQikTckkkroHJVCYIuGZcXCblNFldE9UnHO5DZmwcc7NzWF5awuLiApYWFwVxLBZHXV0d7HY7rFYbKVQoBBGnx0QqlVKsLxrEymZyM1hfX8dr58/j+vv7eHfvHbz91jVsb2/h9MwMRkfTqKcsqqtrILE1XpBwLbjr3IwaOoxEosgR2ZlXzuDK5cs4uHULH965jYObN3Hn9gE+uHEdu7u72NjYwMT4hKirVFBQgBJKl7vF9mBCtkB3dw8ymTFsbm5iZ3sHiXgca6truH/vEA9+/gm/P3wg8OXnn9HH3qSzVbQ0t5Bt8vJEM9hTrJQJy6lJsVgMKysrePXsWfj9fvH1yspKUbvjJ3/gn7+O8PfxYzw9eoRP798TcaFQCBJ7x+v1UnAFWC03h+0xMjyMrXPnxGq3lyOVSolmjGUyOLz7EZ4R2fGTPwXxjz98h4uvX0SUSiTxdcvlckKynDzJhBaLhRqRxe6FCwgGg6KmbJ/Gxkakkkmq6Qa+/uoLPH38CP8+O8L3336DS29cQmQg8jxlDnaRcTldTp/Nyp1lVR6PB7Ozs0gmEmhv70A0GsXK8hLe29vDb1RDTvnwk7vY2dqGt7OTfViIPJkEpapEgH/zEOj0dsBV4UQZebSvv0/cnkQyjqXlRaH+6tUrePjrL0T2MW5Qt1cpQ54JUqutAw2GFrhNHkIbmgiNxla0WNrhKfeK52bzy+hw+DDUmUasLQWvqxtzg8uYjy5jvDeLiUAW4cYIxZPCvsoEMu1ZDDWPY7hlAomGNNIeulqeaaTcY2I/2ZRBihCrH0G0bggh5yB85pBAj/UUugkB+wDCtC8FXRFke+eRC8xjJkhd9GYx3pVDpnMak77TmPbPYWFgVeznehfEXsAxgJArinDFoFgZQWdEQDpVHYP/pT4EaZMDT1oD6HX0I+AcgM8WEuixk4ryME5aAmINuAbQ6+yH39H3/0rgVVpZWsP87CKS8SH0+Pxoa/FgdDiNLq8PRn0ZTEYzaqpqxarT6GEz22AlWExWGHRGqFUalCrVAvwsTU5NIp6Ik0WS6A34aRxVilvB1jHSFbTSLOTByn8Vej0NWb1WDFm1Ri0cweOPh/QJRYGI+Q9R06UhrTP3/QAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/502b1/hypetrain.png","srcSet":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/f2e6d/hypetrain.png 114w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/4ddba/hypetrain.png 229w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/502b1/hypetrain.png 457w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/7ddc2/hypetrain.png 686w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/435bf/hypetrain.png 914w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/6050d/hypetrain.png 1200w","srcWebp":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/15384/hypetrain.webp","srcSetWebp":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/31fce/hypetrain.webp 114w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/e3e25/hypetrain.webp 229w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/15384/hypetrain.webp 457w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/0258d/hypetrain.webp 686w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/64ea2/hypetrain.webp 914w,\n/static/ba304dffd3008768bfc4d0bb4d17d7e0/9000d/hypetrain.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%20181v182h3c2%200%203%200%202-1l4-1h4l9%201%203%202%201%201c-1%201%200%201%201%201%202%200%203-2%200-2v-1a927%20927%200%200010-2l4-1%205%201-5%203-7%202-1%201-4%202c-18%208-29%2014-28%2015l1%202-2%204c0%203%200%203%202%203%204-2%205%200%201%202l-3%203%206-3c4-2%205-2%205-1v2c2%200%203-2%202-2-1-1%200-1%202-1h4l1-1%201%201v2l-2%202-4%203a119%20119%200%200027-1l-1-1h-3c-2-1-2-1%202-1h3v-1l1-1%201-2v1l1%201%202-2v-2l1%201h3c1%201%202%202%203%201v-3c2-2%202-2%202%200h3l3%202%204%201c1%201%201%201%203-1l6-1c5%200%206%201%200%205l-5%204a17164%2017164%200%2000329-2l1-200V0h-82a799%20799%200%2000-84%201L117%200H0v181M349%2024c-3%204-3%2013-2%2018%203%208%2013%2015%2021%2014l3-1%202-1h-2l-3-1-3-1-3-1-1-2c-3%200-5-1-4-2l-1-1-1-2-2-2v-1c0-2%200-2-1-1-1%202-1%202-2-2l-1-6a1106%201106%200%20010-8M85%2035c-11%202-23%207-14%205%203%200%203%202-1%203-3%201-4%203-1%201h4c1%200%202-1%201-3%200-2%200-2%202-1l1%202v1h1l2-1h1c0-2%204-2%206%200%202%200%202-2%201-4s-1-2%202-2l3%202h2l1%201v1h2l2%201%201%201-2%201c-4-1-8%200-6%202l2%201h-3l2%202c1%200%202%200%201%201h1v3l1-1%203-1c3%200%203%200%201%201-4%200-5%202-2%202%202%200%202%200%201%201v2l1%201c0%202%200%203%202%202l1%202-2%202-2%202-2%201c-3%200-5%203-3%204l6%201%201%201%204%202%202-1c-1-2%200-2%201-2%202%200%204%202%202%202l-1%202%205-5%2015-14c5-3%2010-6%209-7-1-2-15-10-21-12s-28-4-33-2m163%2059l-9%201-7%202%2011-1c12-2%2026-3%2026-1l-5%201c-4%200-5%200-4%202%200%202%200%202%201%201%200-2%201-2%205-2l5-1c-2-2%2016%201%2029%205l7%202a116%20116%200%2000-59-9m26%207h-3l-3%201c-2%200-3%200-2-1h-3c-1%202-1%203%206%203%204%200%206%200%205-1l1-1%203%201-1%201c-1%201-1%201%202%201h4l1-1%202%202h-6c-11-1-24-1-25%201h-2l3-3c3-2%203-3-2-3-6%200-26%205-26%206h2l1%201-1%201-1%202-1%202-3%201v-1c2-2%201-3-1-1-2%200-2%201-1%202s-1%202-6%202l-2%201-1%201c-3%201-3-1-1-2%203-1%204-3%202-3l-2%201-1%201c-1%201-2%200-1-1h-1c-2%202-2%202-1%203l2%204-1%202-2-2-2-3-2%202c-1%201-2%202-3%201l2-2%203-2-3%201-4%201-1%202-1%201c-2-1-3%200-2%201h2l1%201v1h1l2-1v2c-2%200-2%201-1%201l-3%202-1-1-1-2-1%201h-1v1l-1%201-3%201c-2%202-2%202%200%203l1%201c-1-1%200-2%202-3%203-1%204-1%202%201-2%201-2%202-1%202v1c-1%202-1%202%201%203%201%201%201%201-1%201l-2%201-1%201v-2c1-1%201-1%200%200s-2%201-2-1l2-2h1l-2-1h-1l-1%201h-1l-1%201v-2l-1-1v3c0%202%200%202-1%201h-1v2c-1%201-7%209-7%207l-6-2%202%202%203%203h-1l-2-1c-2%200-2%200-1%201%202%200-2%206-4%206-2-1-1%201%201%203l2%202h-6c0-2-1-2-1-1l-1%201h-2l1%201c1%200%202%201%201%202l-2-1c-1-1-1-1-1%201l-1%204c-2%202-5%2011-4%2012l-1%201-1-2c0-7-5%2012-6%2025%200%209%200%209%202%2011l1%201h-8l3%201%204%202%203%201h1c0%202-4%203-5%201v7c-2%201-3%205-1%205l1-1v-2c1%200%203%208%202%2011s-1%202-1-2c0-3%200-3-1-2l-1%203v1c-2%200-2-1-2-3s-2-1-4%201h-2l3-3%202-2-2%201h-2l1-2%203-1c1-2%201-2-2-2s-4%201-4%202h-1l-1-1c-1%200-2%200-2-2l3-1c3%201%205%200%203-1h1l3-1h-1l-2-1c0-2-8-2-8-1l-2%201c-2-1-2%200-2%202%200%204-1%204-1-1-1-4-1-4%201-3v-1c-2-2-2-2%204-1l8%201%205-2-1-1c-4%200-6%200-5-1%201%200%202-1%201-2h-1l-2%201%201-1c1-2%201-2-6-2-6%200-7%200-7-2-1-1-1%200-1%202l1%203%201-1c-1-1%200-1%201-1%202%200%202%200%201%201s-1%201%201%201c3%200%202%201-2%201-2%201-2%201-2%205a84%2084%200%20004%2022l5%2016v-3c-1-2-1-2%201-1s2%201%201%202v1l1%202%201%203v1l-2-2h-1l5%2010%201%201v1l1%201%201%203c1-2%201-6-1-7s-2-6%200-6l1-3-1-3v-1l1-2c1-3%202-4%207-7%205-2%206-3%206-6l1-5h1l10%201c6%200%208-1%205-1h-6l-1-7-2-8v-1c-2-1-1-6%201-7%201-1%201-1%201%202s1%2011%203%2014l2%202c1%200%202%200%201-1l-1-2c-2%200-2-7-1-8v-2c-2-1-1-7%202-9l1-3%203-18c1-2%201-2%201%201v5l1-2%201-3c1-1%200-4-1-4l-1-1h2l1%202%201%201%201-3c0-1%200-2%201-1l3-1c4-3%209-1%209%204%200%202%200%202%202%202%202-1%202-1%202%201l1%202%203%201-1-2-2-3c0-2-3-6-5-7-2%200-2-1%200-5a36%2036%200%200137-16l-3%201c-2%200-3%200-2%201l-2%201c-2%200-3%201-1%202h2v2l-1%201h2c1%200%205%203%204%204l1%201c1-1%202%200%202%201l1%201h5l-1-1c-2%200-1-2%201-2l2%201%202%204%202%202c-1%201%200%201%201%201%202-1%202%200%202%202h1l1%201c-1%201%200%201%201%201v1c-1%201-1%201%201%201l2%203c0%202%200%202%201%201%201-2%201-2%202%200l-1%206c-2%203-2%204%200%205%201%201%201%2012-1%2011l-1%201-9-2-8-4-1-3h-2v2c-2%200-4-3-4-4l-1-1-1%201-2%201-6-2-6-1h-2c0%201-1%202-4%202-7%200-6%201%202%201%209%201%2015%203%207%202h-21l1%202%203%202h3l-3-1-2-2c0-2%202-1%205%201s4%203%203%201l1-1%203%201-1%201h1c2%200%202%200%201%201v1h2c0%201%205%202%207%201h1s4%202%209%202c14%203%2022%206%2024%208l2%201h5v5l1-2c0-2%200-2%202-2l8%203c8%203%2010%206%204%205h-3c0%202%200%202%201%201h2l1%201%201%201c1%201%200%201-1%202l3%201%205%201h-5l-4%201-3%201c-2%200-3%200-2-1l-5-1-6-1-2%201%206%201%205%201-3%201c-4%200-13%201-12%202l-2%201c-3%200-4%203-2%204h-3c-3%200-4%200-2%201s2%201-3%201c-4%201-7%203-4%203l2%201c1%201%200%201-2%201-2-1-3%200-3%201v1l2-1h1l2%202c2%200%202%200%201-1-2-1-2-1%200-1%202%201%203%200%204-1l2-1h2c1-1%201-1-1-2-1-1-1-1%201-1%201-1%202%200%202%201l2%202c2%200%203%200%202-2%200-2%200-2%201%200%201%201%201%201%201-1v-2l1%202c1%202%201%202%201%200l1-2%201%202c-1%202%201%201%202-1h1l2%201c2%200%203%200%203-2-1-1-1-1%200%200h5l16-1a494%20494%200%2001-52%2020l-4%203-5%201-3%202-2%201-2%202-1%201c-2%200-3%200-2%201l-1%201h-1c-1%202%205%202%2010%201%201-1%201-1%200%200s0%201%204%201l9-2%2011-6v1l1%201%203-1%201-1h-1c-4%201-2-1%203-3%205-3%205-3%205-1l1%202%201-1v-3l2-1%202%201%201-1h2l3-1v-1c-2%200-2%200-2-2l3-1c1%200%202%200%201%201l1%201h1c-1%202%200%201%203-1l1-2c-2%200-2%200-1-1h2l6-2c5-4%207-5%207-3l1%201c1%201-4%207-5%206l-2%203c-1%202-2%203-3%202l-1%202c0%203-3%206-4%205-1-2-3%201-2%202l-1%203-2%203h28a146%20146%200%200029-1h20l2-1c0-1%201-1%201%201h9v-1l1-3%203-5c3-5%205-6%203-2v2l4-7c-1-3%200-4%201-3h1c-1-1%200-5%201-8%201-4%202-5%202-3%201%205%205-13%205-18v-2c1%203%201%203%202-3v-6l-1%203v-12c0-12%200-16-1-15v-12l1-4-1%203v-2l-1-8v2c0%205-1%205-2%200-1-2-1-2-1%201l1%208v10l-2%205%201-7c0-8-1-14-2-13v-2l-1-5v-10c-1-5-3-10-5-12l-1-2c1-2-2-7-3-7v-1l-1-1-2-3-3-3%201%203v2h-1l-1-1v2l2%204h-3v1c2%200%202%201%200%202h-1l-1-2c-1%200-1%201%201%204%201%203%201%203%203%202%202-2%204%200%203%203-1%201-1%201-2-1h-2c0%203%201%205%202%204v2h2l-1%202v1l1%203v4h1c2%200%203%202%202%208l1%202%202%205c1%207%201%208-3%208-2%200-2-1-2-5l2-5v-2l-3-6c-2-5-3-6-4-5-2%200-2%200-1-1s2-2%201-3-4-1-4%201h-1v-8l2%202c1%202%201%203%202%202l-4-8c-4-9-6-10-6-9l-1-1-1-2-2-2-2-3-1-3-3%203-2%203-1%202-1-1v-1l-1-2c0-2%200-2-1-1-2%201-5-1-3-2l-1-2c-2-1-2-2-1-3%202-1%202-1%203%201s2%203%203%202l1%201%201%201v-4l-1-2-2-1h-1l-4-1-4-2v2c3%202%201%205-2%204l-2%201h-2v-1c3%200%202-1-5-5l-3-3c1-1%204%200%206%202%205%204%206%204%206%201l1-2%201-1%203%201%202%201-3-3-1-1-2-1-1-1%201-1v-1h-3v1l1%201%201%202-1%203h-1v-2l-1-1c1%200-2-3-6-5-7-4-8-7-3-4%203%202%202%200-1-2s-6-2-4%200-1%201-8-2c-8-3-8-5%200-2l1-1c0-2-17-8-23-8l-2-1-1-1h-1c-1-1-1-1-2%201m-6%209c-1%202-2%203-4%203s-2%200-1-1v-3l-2%202-2%202v-2h-3l-1%201c-1%201-2%200-4-1l-2-1c1%202%200%205-2%205l-1-2-1-1v3l-1%201h-1v3c-2%201-2%201%201%201h3l-1%201h-1l-2%201c-3-1-6%202-3%202%203%201%207%200%207-1l1-1%203-1c1-1%201-1-1-1-2%201-3%200-1-1%201-1%200-1-1-1l-2-1c0-1%204-2%2013-2l8-1-8%202c-9%201-11%202-6%202%201%200%202%200%201%201-3%201-1%202%205%202l5-1h3l4-1h3c0-1%204-1%205%201h3l1%201-7%201-6%201%209%201c5%200%208%200%207-1l-2-1%203-1h3l-3-1-3-1-1-1h-2v-1l2-1%202-1c2%200%203%200%202%202l1%201%202-1h3c3%201%207%200%205-1h-2c-1%201-1%201-1-1s0-2-1-1-4%201-5-1h-7c-2%200-3%200-2-1l-1-1v-3l-1%202-1%201-4%201c-2%202-1%200%201-3l2-2h-2l-2%201-1%203c-1%203-1%202-2-2-1-2-1-2-1%201m-41%2012l-7%204-4%202%202-2c2-1%201-4-1-4v3l-1-1-2-1v3c2%203%202%203%200%203l-1%201h-2l-2-1%201%202c2%200%202%201-1%203-2%201-4%202-5%201v1l-1%202-2%202h1c3-2%202%201%200%204-2%202-1%204%201%203h2v-1l-1-2%202%201c0%201%205-2%2011-8%203-3%208-5%209-5l1-1h2l2-1v-1l1-1c0-1%201-2%203-2l2-3v-1l1-1c-1%200-10%203-16%207l-3%203c2-1%203%201%200%201h-1c1-2-1-1-4%202-4%202-6%203-5%201l18-11%204-3-4%201m-33%2021l1%202h-1l-1%201c-2%203-3%202-3-1%200-2%200-2-1%200l-1%203c-1%201%200%202%201%203v1c-1%200-2%201-1%202l-1%203c-3%202-2%203%200%202h3l2-1%201-2%201-2%201-1c1%201%201%200%201-1s-1-1-3%202l-3%202c-1-2%201-5%203-4v-2l1-1h1l1-1%201%202%201%202v1c-2%203-1%203%202%201%202-2%203-5%201-3l-1-4h-1v-1h-1l1-2%201-3-1%201h-4c-3-1-4-1-1%201m-29%2020l-2%202c-1%200-2%201-1%202l-1%202-1-3-1%201v4l1%201c2-1%201-1-1%202l-2%205v1c-1-1-1-1-1%201v2l-1%202v3l-2%202h2v2c-2%202-2%2012%200%2012l1-10%201-5%201-1c0-6%203-15%204-15l1-2%202-4%201-4-1-2v2M24%20213c-1%201-2%202%200%204h1c0-1%201-2%202-1v4l1%201v3l1-1%202%201%204%202%202%202c0%201-2%202-2%200l-2-1%201%203%201%202c0%201%202%205%204%206l-1%201c-2-1-3%200-1%202l2-1h2v2l-1%203v3l-1%203%202-3%202-1c0%203%203-1%203-3s0-3%201-2c0%203%202%202%204-2%204-7%202-18-4-24-6-5-18-7-23-3m155%2031c-1%202%201%204%202%202%201-1%2019%200%2019%201l-1%201a654%20654%200%2000-20%201c3%202%201%202-3%201-3-2-4-2-4%200l-2%201v-1c0-2-4-1-5%201l-3%201c-2%200-2%200%200-1l2-2-3%201h-3v1c2%202%204%202%2014%202l9%201c2%202%203%203%203%201v-1c2-1%204%202%204%204%200%201%201%202%203%202l15-3c2%200%203%200%203%202%201%201%201%201%201-1l1-4v3l1%202c2-2%204%201%202%202-3%202-1%206%202%207v-2h3l2-4v-6c2%200%202%200%200-2-1-3-2-3-7-1l-1-1c1-3-1-5-6-5l-6-1-6-1-5-1h-4c0-2-1-2-1-1h-4c-2-2-2-2-2%201M24%20323v7h4c5%200%209-4%206-7v-3c0-3-2-5-6-5h-4v8m165-4c-2%200-3%2015-1%2015l1-2%202-2c3%200%206-3%206-6%200-1-4-6-6-6l-2%201M54%20361l-6%203-7%202v1l-1%201-2%201-3%201s-10%203-9%204h-2v1c1%201%201%201-1%201h-1l-2%202-2%202c1%201%201%201-1%201h-1c1%201%201%201-1%201h-1v1l-3-1v-1H8c-1%201-1%201%201%201v2H6l-1%202c0%203%205%202%2010-1s11-4%207-2c-3%202%201%203%204%201l4-1%202%201-1%201-2%202c0%201%205-1%207-3h4l2-3-2%201h-2v-2l-1-1-2%201c1%201-2%202-9%200-6%200-6-1-4-2h4l1-1%201-2c1-1%203%200%202%202v1l2-1h1l1-1c1-2%2015-8%2015-6l-1%201-3%202c-2%202-3%203-4%202h-3c-2%201-2%201-1%202l2%201%201%201%203-1a170%20170%200%200032-17c-3-1-12%201-12%202h-2c0%202-6%206-8%206-4%200-3-2%202-4s5-2%204-3l-2-2-3%201m37%200l10%202%202%201h4v1l-1%202-1%201-1%204c0%203%200%203%202%203l4-1%201-1v-6c1-3%201-3-1-3-2%201-2-1%200-2%201-1%201-1-1-1l-4%202c-2%200-2%200-1-1%200-2-3-3-5-1h-1l-5-1c-2%200-3%200-2%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/ba304dffd3008768bfc4d0bb4d17d7e0/6050d/hypetrain.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":["TS","JS"],"category":"Post","slug":"/beware-of-the-hype-train","id":"7aae8fcf-70a1-578b-858c-9254edb0f609","title":"Beware of the Hype Train","appDescription":null,"mailchimp":false,"next":[{"id":"a3c549e8-858a-51ee-9e4d-f5f88cfe55a0","slug":"/basic-ubuntu-guy","secret":false,"title":"Basic Ubuntu Guy","author":"Luke Celitan","date":"October 15th, 2025","dateForSEO":"2025-10-15T00:00:00.000Z","timeToRead":1,"excerpt":"A collection of wallpapers for desktop, mobile and tablet, volume 1","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\": \"Basic Ubuntu Guy\",\n  \"excerpt\": \"A collection of wallpapers for desktop, mobile and tablet, volume 1\",\n  \"date\": \"2025-10-15T00:00:00.000Z\",\n  \"hero\": \"basic-cover.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Project\",\n  \"tech\": [\"Ubuntu\"]\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\": \"basic-ubuntu-guy---volume-1\"\n  }, \"Basic Ubuntu Guy - Volume 1\"), mdx(\"p\", null, \"Hello for quite some time I have used this website to get my beautiful\\nwallpapers for my devices, \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://basicappleguy.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://basicappleguy.com/\"), \", which I can highly\\nrecommend, (most probably way better than what you will find here). However I\\nlove my space stuff so I have decided to give it a go, so without further ado,\\nhere is my first collection of wallpapers, for desktop, mobile and tablet.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1232px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"75.32467532467531%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAADnklEQVQozwGTA2z8AMy3cLKwcZOocmmddDaSfBOGhAV1ggFieABTawBJYQBLYwBVbgFgeQhxhxiHmzuls1S4wVW5wVO4v1K4wAC4qHGWo3BvnHE+k3cWhn0FdXoBX3AATWQARFoAR14BZn4DaoEGcogZi5xGrrZev8VavcNUuMBSt79KsbsAn5FxdpBvQ45zF4Z4BXJyAV1nAExdAEFVAkJUAEhcAm9+AICKEo+VU7WydsnGaMLFVrm/VbnBSq+7L5inAIF1bk91ayN0bQtpaQNXXgBJVAA/TgA/TQBFVANZXgZ9dSachXe/nZzSunzIvVe5uVm7wkiuuSKNng14jgBqWGY9VV8jT1gVSFAMQEkGPEUGPEMHR0gcZ1IphF9Zo2mxyIDK2KOeyqFpu6Riw8A/pbEQeI0AZn4AZX0AXz9aQj1NMjpFJjc+HTU5HTg3IkE3R2M9hJtIoq1N3cxk6tqHx8uBnr+DjMmnPZicA153AFNtAFRtAFVtAGAvTVAwQEUxODsyMzw2LklALHJXLaiINdi8RfnSWvnZbuTIYNHDacHHh1iFdQJJXwBGXwFGXgBHXwBIYABoJ0NgKjdaLi9ZMypoPSaYVia/byjirDz/2Vz82Gjww0zqvVHhvWh6c1UWO0gGPFABPVMAPFIAPlQAP1UAdCM5dCctdCwngTgjr1Ij0nEl5Zov9rxD+MRL9Lg99LhC6qtOkl89NTE6FTFCBTNIADRKADhNADpPADpPAIchMIonJpozIsBPIthtJOaSK/CpNfOuOO+kMPOnN+KOO5JEL0smMykpPA8oPwIsQwAyRwA3TAA5TgA5TgCZIiusMSTLTSPaaSTihSnrly3unS/tmi3tkzDUay6KLSlZHzA1IDUZHzkLIz8DKkIAMkgAN04AOU4AOU4AtjIo0E4l2WIk33gn5YQp54gp54kp5n8ox00oghspXxcuQBkzJxo3GRw7DSNBAytGADRMADpQADpQAD1SANFMJ9RXJNlkJd5xJuJ6JuN8J99vJsVBJpkdK2ITL00TMjcVNyYYOxkeQA0nSAMwTQA5UgA/VgBEWABIWQDRUSXSUiTWWyXZYSXdaiXdZCXCNyaqICuBFjFZDDRNETs5FkAmG0MZI0kOLk8EOVUAQlkASlwATl0AUFwA0lQn01Qm1FQn1lYmzUkmpiYqlBgxhBY5Zw4/YhBHVxROQxxSMCVUJDBZGT1cDkthBFZkA1pjA1thA1pgE8BJENPKhwQAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/c83ee7526985900c1e8ab40e069b7b10/e516e/basicUbuntuGuy1-desk.webp 1232w\"],\n    \"sizes\": \"(max-width: 1232px) 100vw, 1232px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/c83ee7526985900c1e8ab40e069b7b10/76e52/basicUbuntuGuy1-desk.png 1232w\"],\n    \"sizes\": \"(max-width: 1232px) 100vw, 1232px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/c83ee7526985900c1e8ab40e069b7b10/76e52/basicUbuntuGuy1-desk.png\",\n    \"alt\": \"Basic Ubuntu Guy 1\",\n    \"title\": \"Basic Ubuntu Guy 1\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"p\", null, \"click on the images to download the full resolution version.\"), mdx(WallpaperShowcase, {\n    desktop: wallpaper1,\n    tablet: wallpaper1Tablet,\n    mobile: wallpaper1Mobile,\n    mdxType: \"WallpaperShowcase\"\n  }), mdx(\"p\", null, \"click on the images to download the full resolution version.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"2464px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"75.32467532467531%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbUlEQVQoz2NgwAs4mdglWAUVOES1uKVsRLSDZWx6LRNX+JWt8SlodQ3Fp5ONiVWMVUCeQ1SDS9JKUCVEwqTbNHx9SMmW0IKpvlEqhjo4dbIwsgix8Muwi6hzS1oKKIaK6HTpe2+JLNwWk7siIs7IylRIVxu7TiYGJn5WPhkOYXUuCUMumVAhjTZN563R+buS87YmJLi6OQgaG0loaWHRycjIyMXCI8guJMsp7iOrUWXt2KxmuyUye3dmwb705PAgTwFLa0kDQ1YOdix6WVh5uDiEBbilpPgVXaS0dtTnnZ/UsSMt73BuRn5ckJCDk5SFFTsfHzZrWblZOEQ5eGX5RNTFJfQddJ3Xzmx/emnD8bKiptRISQ9PaQdnbjFxiAvRQomTiUuUhU+OQ0yDR8FcXNMtKLdq8/6135+eXdBQoOjjJ+Phz6egCLEFzbnsTJwizHyyrBKanEoWAob+6tFlSXOXnLl49P6tU0ZREVI+YcI6+ljDl4WJU5CZT4pVXINDyYJX3086qNSyc1H37gNvX9zL6u4S9QmXsLBlRHcqyFImRnZeJh4xFjFVdkWgTn+JwDL9+gVhi7dO2HMgqbNbOjhW2tmXmZ0d06uMjKxcTFwirCJK7IpmPHp+Yt5Fek3LzXpXWnTO1SqolQ5NkvONZOXhxRJIjCwcQAezCMmzKxjy6HoJu2Rp1Swy6d9g1LFUs7xHOTpbOTyDU0QCW/ACRTj5WQRl2OX0uLXdhOySVYtmGfVvMuxapVUzVSkuXykql0deDbtOUOwISLLL6nBpOQtYxSqm9xv2bTLsXqNdN1spvlgppkBAxxynTgYGAArwjeKMrQIaAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/ff6a43645084e0126fe11f6077a8e2ca/9fd57/basicUbuntuGuy2-desk.webp 2464w\"],\n    \"sizes\": \"(max-width: 2464px) 100vw, 2464px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/ff6a43645084e0126fe11f6077a8e2ca/c4dec/basicUbuntuGuy2-desk.png 2464w\"],\n    \"sizes\": \"(max-width: 2464px) 100vw, 2464px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/ff6a43645084e0126fe11f6077a8e2ca/c4dec/basicUbuntuGuy2-desk.png\",\n    \"alt\": \"Basic Ubuntu Guy 2\",\n    \"title\": \"Basic Ubuntu Guy 2\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"p\", null, \"click on the images to download the full resolution version. (desktop, tablet,\\nmobile)\"), mdx(WallpaperShowcase, {\n    desktop: wallpaper2,\n    tablet: wallpaper2Tablet,\n    mobile: wallpaper2Mobile,\n    mdxType: \"WallpaperShowcase\"\n  }), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"2464px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"75.32467532467531%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAADPElEQVQozy2Q20+TdxzGv4ff27et9ABUStHVQQkFbMuGFKeyoa1jZWIRjJwirnKwSOVtaamWTbcyVlBeNw8bREAcwS1jF8sWSZbsartctpudLpZlQjRkM/sr1lf95rn9PN/neQDdXejs1LG3ETtO4+ApilRyyET7ZWoGakGqRNIjGZAkRIHIiJQXID7VnqNUOwAlYSscaKXoACXDdKGMWk3UzHQMMITsRN6BlJesWdBzXrPgUArLw+SNgzVUDsd6afI8ZVspaaewmUKInYhBZAeyBdmcj0CahXhmAfqLi3REwaoz5Jlgw9EGjJyjqxdoLsDjO6m9gNqReombSHKQZNN4Nj79LzTYoGRF+h75R8mbAHdih2h5gybifGuM1AMUc/BJq+hh7mNuJKmERDGyKc8Ty/n+IMYv6zM3eWyFfCO87wo4h+3QHpFmcwW33zZ9ENANVcCpYjhtpC6WfKQrQVGoTSC0CYB6IlJ6Wn53mc/OkzfG9Zc9uwbn9iZ/Tnz+y8zq9xn1o5PJdsdZF/RbOUxSBUrFKCxaeJYB6+poSJEzs/J7a9R9m1+5Uu9JT3pHfujPPVz66vH6ypMH6m+f3sgGE3Wip1AKoFa+kES+vB6wbDc2NQtlUlJynPwMupfl+kxzdWKmbvinkRt/3/ly857678bM9rdL6vG4jzvMOj9KRSxZNBgMVix34ZudpEzReZUSX8Dxj4t8F0/UKAv+4d8vLW6urD1endp+MLP19bzi638RQrLkRslEbARgA5jt4PJhT5THZ0lZoNg6BK+VeyYiNdH1w6N/5Va37t55dDf5ZOP9jUtJvxSwiSYWZSRkABQgLGB9AWobaSjN8Ws8voKD9+lQ9qXahFLT/11b4uHc6tb89PbimT8Xol3Og3Y4VCAa8rVBOzKAKALbHvAHKD7FY6pI3YfeJf2+1Gu1sXeqT/zYPbGpfvLo+uA/HwZTDZ5ScBeLg3qugmc0kAl0Nih1QbCDkjmOqZxYgza1cG+0pbLvatWRXyOpren0f1OHFxodFWArZbcFfPD88uHJDMYScNZAx1ukZGn0Op1bhlczu119bbuC89X7/xgY2k63fvOy/XUwlpFtJ7n+B/a8xqfi2tDKAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/6a2483bae5be4365fe30098ba2ecc37b/9fd57/basicUbuntuGuy3-desk.webp 2464w\"],\n    \"sizes\": \"(max-width: 2464px) 100vw, 2464px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/6a2483bae5be4365fe30098ba2ecc37b/c4dec/basicUbuntuGuy3-desk.png 2464w\"],\n    \"sizes\": \"(max-width: 2464px) 100vw, 2464px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/6a2483bae5be4365fe30098ba2ecc37b/c4dec/basicUbuntuGuy3-desk.png\",\n    \"alt\": \"Basic Ubuntu Guy 3\",\n    \"title\": \"Basic Ubuntu Guy 3\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"p\", null, \"click on the images to download the full resolution version. (desktop, tablet,\\nmobile)\"), mdx(WallpaperShowcase, {\n    desktop: wallpaper3,\n    tablet: wallpaper3Tablet,\n    mobile: wallpaper3Mobile,\n    mdxType: \"WallpaperShowcase\"\n  }), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"2464px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"75.32467532467531%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAACk0lEQVQoz2N431p0rjSl0s1eW0qCAQaYGBkZiAFXgwvuF5b8nZT/rrV4W2VKgKUxCxMzRD8jQSNuOcc/Loh5WhD5KiP+98Tc/xtajk8sczc3AEoBNRNwwmWt+NtOUQ/jQh5GRT7NCX3dGv93c9nfA/0LGrJFhQRATmBiwql5ikHWSsXMU7qx193C7iUF3Y8JeF4e8qEr4f/W3nsrJ9jrqOPT72GUGaibOkcmbZNk+j6zyCveHrfCPR9HhL7IjPve13xz6mxPY1OcQeirn+xilBGrmbBNNnajYPJOreALXg73Ilxve/jfdok6k9E4vWO5uYEVOAgw7HfVjXXRjnaSdupRDJ4iETddNGmDeNR2Y//zrs6njQKPOyX0RE5qLFyoqKkPCUIUzeYqvsZK7toiRpFyfolKYa7KIW1Soe0yiRMMfA7rOa/VjO3Sqm51mVgY1sMvKIau30DGXkvSXFPMOFDK3VfW00zKwVbOYZaie4FCUJ22Z6VuWI5WZp5BeZdFr4NTJrqzpQVVlIW0VAQ1NAW1FPg17cTtTaRsM+Wt2pRdwuXt85R8HNR9DNQ8A9Si/RwqZaVQHc/Lxi3EKSzCISLDJS3NKS7Dq6DMry7Kr+whoV8t6eEsZucraaYlYagoaeIo72mt5s/BzIGwmZ2ZhYWJkYeFTYCNR5FDSJlTQIKdX4ydn5ONy5VP3U/IQo5XUYlfXklQXUVYR1fCQpxHBqwPbDkrIyM7MzM/Kys/G5skB5cWD68qF7coOyc/CztQ1oFXwYhbnpdDQJRHQoRHWlZIQ5pPgZmRGWozCyMjGxMjKxMTFzOzBAebEjeXPi+vDAcnGzOzABubCiefDAc/Lyu3KKcwOyunMLeUNK88JwsnRC8ASFKgIc0DZPkAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/3323db2887d1696409490b060417a82c/9fd57/basicUbuntuGuy4-desk.webp 2464w\"],\n    \"sizes\": \"(max-width: 2464px) 100vw, 2464px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"/static/3323db2887d1696409490b060417a82c/c4dec/basicUbuntuGuy4-desk.png 2464w\"],\n    \"sizes\": \"(max-width: 2464px) 100vw, 2464px\",\n    \"type\": \"image/png\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"src\": \"/static/3323db2887d1696409490b060417a82c/c4dec/basicUbuntuGuy4-desk.png\",\n    \"alt\": \"Basic Ubuntu Guy 4\",\n    \"title\": \"Basic Ubuntu Guy 4\",\n    \"loading\": \"lazy\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    }\n  }), \"\\n        \"), \"\\n    \")), mdx(\"p\", null, \"click on the images to download the full resolution version. (desktop, tablet,\\nmobile)\"), mdx(WallpaperShowcase, {\n    desktop: wallpaper4,\n    tablet: wallpaper4Tablet,\n    mobile: wallpaper4Mobile,\n    mdxType: \"WallpaperShowcase\"\n  }), mdx(\"h3\", {\n    \"id\": \"fun-fact\"\n  }, \"Fun fact\"), mdx(\"p\", null, \"The majority of tablet users tend to use their devices in landscape orientation,\\nparticularly for larger tablets. For full-size tablets (over 9 inches),\\nlandscape usage is dominant, with iPad Pro users using portrait orientation only\\n27% of the time. A survey of 155 tablet users found that 72% of 10-inch tablet\\nusers preferred landscape orientation, a trend observed across both iPad and\\nAndroid devices. This preference is attributed to the larger screen size making\\nlandscape mode more comfortable for tasks like watching videos, using keyboards,\\nand browsing, which are often more naturally suited to a wider display. While\\nsmaller tablets (7-9 inches) show more balanced usage, with 72% of 7-inch tablet\\nusers preferring portrait orientation, the overall trend for tablets, especially\\nlarger ones, favors landscape.\"), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://thomaspark.co/2011/10/in-portrait-or-landscape/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"https://thomaspark.co/2011/10/in-portrait-or-landscape/\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["Ubuntu"],"category":"Project","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVQ4yy1U+VNTVxh9/wKdjraWJRTIQkJISAKGQEIShsWSsAVblkqACiUUZBFapiCbyKKAqQTUdizI4oy1U8EFagsWpARwoBQY2QWXGcYO/8Pp9y7+8M297937zjvnfOdebm9vD3zt7u5if/8V5ubcuNTcjKrKSjivOjE4MIAeVzdaWy6x8XZ/H2ZnZ7GysoLpqSm4aT4zM4O1tTWsr6+De/ny5XuwfbahvKwMjQ2NaG1tRXV1Nb7Ky0Pl+fO43tuLjitXUHehFhVlpeh1uRgYD8zXxvoGtra2wO3s7DDA9RcvGLOy0lJUlJfDUVhIH1/AneE7mJ6exvLyMhYXFzE5MYGR+7+xPfW0vrq6is2NTWwTGI/FbW9vY39vn0krPXeOsSkl0NycXPx080dM/DmBf5aW4Ha7MfNsGg9G7uPxo0eYIjW1NTVwdnVi771KXi2TPD83h5LiYuSfPYuSkhLk5+cT20sYHhzCxaaLcDqdTN7DBw/wx5MnDPDxw4d4vvAclRUVGB97jIODgyPJvHdDgwPIzEjH6bQ0FDmKGOjPt27B1X0NFosF2dnZ1IzbjNXoyAiqv6tGGu2trKxiP2tracHbt2+PmsJrv9rVhYz0dGRlZuLMl1kMxGazISsrC18XFLByURNc3S5iXwCFQgkPDw8UFRWhs7MTdbW1WKXGvH79GtwGoV6oqUVyUhJSU1MRGxuLuLg4JCcnE7MzsBM7u92OsfEx9Pf348aNm6gh74qLS6iR61gifxsbG8jfZ0w2x3eX9y4x0QqDQY+QkBDEx8cj0WpFXk4Osc5AUmIiedmE0dFRkjyKnp4e3Lv3KyVgmKXBkpCAv54+xSvKMTc5OYnYmBikECMrgfCA+shIAjdAo9EgiZinJKfAZDSyjPLsKqgRw0ND6OvrY6rycnNZfN68eQNuYWEBOfZs8iwVZrMZMpkUZpMJ0dFm8kpBYzSMBKZWq9lPi78pxrdVVazT4+O/4/Lly4wlHx2+wczD9rY26rANCURdRQyNxihYPjuFqCgDtNpwqFVqREZEoJbMb29rR31dHQZuD9BpakMTWVFATVtbXTvK4ebmJn65e5fFJv2Lz2EidmqViuSqIZNKoVQqESiRwKDXo6Ojg850K5ovNrOj2UXp4E9SC8WGbw5jyGeHr4b6esqWDRkZGdDpdFAQkMBXAAmBhYWFQSQSMY8dDgeqSDLvY1NjI25cv442Am+mY/vuv3fg7GmZsNsyYTXFQyMOhlGjg1osh9QnABIvPwhPCGguhNjTD1KBEOFyNTSSYKhEQYhQhLIK9PaHNkiFgswccOJjAoSJghEuCYFWrIROqmLzSJkGukAVG0N8AyH3DKASQnrCD7IT/gj6xB/Sjz+l8mPvZfTs/4EnOIWPGAn6GCSbT8Gk0uGUzgyLIQZxWiN75ucGxUkGJPcSsgoicL6CvUVsZD8hQH7OhQrlbEHuTRtps+QjX7aoFEjYx/4feiHYRwQZD+J1tIdfUwjEDEjpKwGPoQkIQmiAHJz771nMu+ewMDePa84foFKGIC4mFqdtp1HzfQ2dljwESWUIFEugofgoKZthmlCYKZtSapgyWIGuDrrCdvewsvwv5XBjg12cW3QvDg4OsuRbrRboKHdGkxkNdHs7Ch2QSgMp9DIIhQGUzZMI12ppLsTx48eg10cyjMPDQ/wP/QqzcxXbjOgAAAAASUVORK5CYII=","aspectRatio":1,"src":"/static/f1d142cb392fdfeebcdc10bf2244c830/a1946/basic-cover.png","srcSet":"/static/f1d142cb392fdfeebcdc10bf2244c830/5b37e/basic-cover.png 236w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/49058/basic-cover.png 472w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/a1946/basic-cover.png 944w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/6050d/basic-cover.png 1200w","srcWebp":"/static/f1d142cb392fdfeebcdc10bf2244c830/99fbb/basic-cover.webp","srcSetWebp":"/static/f1d142cb392fdfeebcdc10bf2244c830/77392/basic-cover.webp 236w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/1f177/basic-cover.webp 472w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/99fbb/basic-cover.webp 944w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/9000d/basic-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='M121%202h2l1%201h-1v1c1%202%200%203-2%201-1-1-1-1-1%201v1c-1%200-2-1-1-2%200-1-1-1-6%201-3%202-4%202-3%204%200%202-1%203-2%201l-2-2-1%201v3l1%202c0%202%200%202-2-1s-4-4-4-2h-1l-1%201v3c3%202%202%204-1%203l-2%201v3c0%203%200%203-2%202l-3-2c-1%201-1%201%201%202l3%201h-3c-4-1-4%201-1%202%202%200%202%201%201%201h-5v5c-1%201-2%200-3-1h-2v2c-1-1-2%200-2%201s1%202%202%201v2c1%201%200%202-2%204l-1%202v2h-1c-2-2-3-1-2%202%200%202%200%203-1%202h-3l-1%202-1%201-1%201c-2%200-3%203-1%204s1%202-1%202h-2v1c2%200%203%202%202%203s-3%200-3-2c0-1-3-3-4-2v3h-1c0-2-2-1-2%201-1%201-1%201%202%201%201-1%203%200%205%201l3%201h-5l-1%201c-2%200-5%203-4%206l-2%202h-1l-1%203-3%204v-1c0-2%200-2-2-1l-2%202c0%201%200%202-2%202s-8%2012-6%2014l-1%201v1l-1%201h-2l-2%202c-2%200-2%200-1%201l2%202%201%201%204%201c1%202%201%202-1%202l-4-1h-1l2%203%201%201%201%201%203%201c2%202%202%202-1%202l-3-1-1-2-2-2-1%201v5l-1-1c-1-1-1%200-1%202v3l-1%202%201%202v3l1%202%201%201%201%201-2%201c-4-1-4%202-5%2017a379%20379%200%2001-1%2018v1l-1%205c0%205%200%206-2%205-3%200-4%202-2%205%201%202%201%203-1%203-2%201-3%204%200%206l1%205c0%203%200%204%202%204%203%200%204%203%206%2014%202%2017%2011%2037%2022%2055l8%2012a502%20502%200%2001-53%200H0v75h68l3%203c4%203%205%2012%202%2015-2%200-2%201-1%201v1c-2%200-2%209%200%2013l1%203v2l109%201-6-5-11-8a216%20216%200%2000-28-19l-1-1c-2%200-4%200-3-1l-2-3-2-2h8c7%200%209%200%209%202l2%201%201%201h1l2%201%2011%205-2-3-2-1h3c2%201%203%201%202%202%200%202%200%202%201%201l2%201%201%201%2011%207a211%20211%200%200121%2018l3%203h34c22%200%2033%200%2032-1v-3c2-3%204-2%205%201l1%203h16c14%200%2016%200%2015-1v-2l2%202%2031%201h30l-6-9-11-11c-3-2-3-3-3-7l-1-8-2-4h55v-75h-28v-2c2-9%202-11-1-18l-4-5h-2c-2%200-2%200-2%202v1c-2-2-2-2-2%203-1%203-2%204-3%201%200-3-1-3-1%200v4l-1-4-1-3v4c-1%203-1%204-3%204l-2%201v2h-2c-1-1-3-2-6%200h-3l-2%202-1%201-2-1v2h-1l-2-1v-1l-1-4c-2-2-3-1-2%201v5l-2-2c-1-2-1-2-2-1l-3%201-4%201h-1v-1l1-2v-1h-4l-2%201c-2-1-4%200-2%201%201%201%201%201-2%201-3%201-5-2-3-3l2-2-2%201h-3l-1%201-2%201-3-2h-3l-1-1-2-1h2l2-1c1-2-1-3-4-3v2l-1%201-1%203-1-1v-2c-3%200-4%200-3-1l-1-1-1%202v1h-3c-1-1-2-3-1-4h-1c-1%202-3%202-5%202-3-1-6%201-6%203l-2%201c-1%201%200%201%201%201l3%201-8-1c-3-3-1-5%202-4h1l1-1c0%201%202%200%203-2l1-2h-2c1-1-5-2-6-1-2%201-6%200-6-2h5c-1%200%200-4%202-5s2-1%202%201l-1%201c-1-1-3%201-2%201%202%202%205%202%206-1s1-4-1-2c0%202-1%202-1%201l2-3c1-1%201-1-1-3h-2l-1%202v-2c0-2-1-3-2-1l-3%201v-5l-2%203-2%203-1%201-2%201h-1c0-2-3-1-3%201-1%202-1%202%201%202%201%200%202%202%200%203l-1-1h-1l-3%201c-2%200-2%200%200%201%201%201%201%201-1%201-3%200-3%200-2-2l-1-2-1%201-2%201c-1%200-2%200-1-1l1-1-1-1c0%201-3-1-2-2l-1-1-1%201-2%201h-2l2-2c2-1%203-5%201-3l-1-1h-1l-3%202h-1l1%201%201%202%201%202v1l-2%201c-1-1-2%200-3%201l1-5-1-2%201-5v-2l-1-2c1-2%200-3-2-1-1%201-1%201-1-1%201-4%203-7%204-6l4%202c3%202%203%202%203%200l-3-4c-4-3-6-5-5-6h1l3%201c2%200%202%200%203-3l-1-3c-1%201-1%200%200%200l-1-2c-2%201-2-2%200-3l1%202h2l3-2%202-5c-1-2%205-12%205-10v3c-1%201-1%201%201%201%203-1%205%201%203%202h-1l-2%201c-1%203-1%203%201%202%202%200%202%200%201%201h-4c-1-1-5%203-4%205h3l2%203v3h7l-1-2c-2%200-2%200-1-2l2-3%201-1c-1-1%200-1%201-1v2h2c4-1%208-1%208%201h-3c-2%200-4%203-1%203h1l2-1%201%201%202%202c1%200%202%200%201-1l-2-2%201-2%201%202h6l-3%202-2%203v1l-2-1-2-1c-1-1-1%200-1%201l2%202c2%200%202%200%201%202-1%201-1%201%201%201l2-2%203-3%201%201v1l1-1v-2l2-2%201%201v2c1%201%200%203-2%203l-1%202-3%201c-3%200-5%203-3%203l1%202h-4l1%203c0%201%204-1%205-3l-1-2c-1-1%200-1%202-1%205%200%207%201%207%203%200%203-1%205-2%204v1l-1%202v-1l-3-1-3%202%201%202c1-1%202%200%203%201h2c-1-3%201-2%204%200%202%202%204%201%202-1l-1-11-2-11c-2-2%200-7%202-6l2-1-3-1c-2%200-2%200-1-1s1-1-1-2v-6c0-2%200-3-2-3v-2l1-3-2%202c-1%202-1%202-1%200l1-3%201-1c-1-1%200-2%202-2l2%201h5l1-2%202-4c2-2%203-6%201-6l-1-1%201-2%201-1h-1l-3-2-3-2v-2c-2-1-4%201-3%203h-2l1%202c-1%201-5-2-5-4h-2v2h-1v2l-1-1-1-1-2%201%201%201%201%201c-1%201-3%203-4%202l-1%201-1%201v-4l-1%202c-2%203%200%205%203%203s5-1%205%200l-1%201h-1l1%201%202%202h-5l2%201c2%200%202%200%201%201v1l1%201v1l4%203-2%201v-2h-7c1%201%201%201-1%201l-1-2c1-1%201-1%200%200l-1-1v-1l-1%201h-3l-3-1c-1-2-1-2-2-1-2%202-3%202-3%200l-1%201v2c1%201%200%201-1%201l-3-1v-2c1%200%201-1-1-1-1-2-2-2-3%200s-2%202-2%201h-2l-4-2c-2-2-3-2-7-3l1-1v-1h-2l-1-3c-1-4-1-4%201-6%203-4%202-6-1-8-2-1-4%200-6%202h-4c-3-2-6-3-6-1h-1v-5c-2-1-2-3-1-5v-3l2-2v-2c-2-2-5-18-4-20v-3c-2%200-2-1-1-1l1-1%201-5%202-11%201-6h-5l-5-1-1-6c-2-4-2-4-1-7%202-2%202-3-1-7-1-2-3-3-3-2l1%202v1c-2%200-7%206-6%207l-1%201-1-1c0-1-1-2-2-1-3%200-3%201-3%204%200%202%200%203-1%202l-1-2v-1l-1-1c0-1-1-2-3-2h-2l3%203%201%202-5%205-1%201h-1c0%201-1%202-2%201-1%200-1%201%201%202%202%202%202%202%201%203l-1%201h-4l-2-2c-2%200-1%203%200%203%201%201%202%202%201%203%200%201%200%202%202%202v1c-1%201-2%200-5-1l-4-1-1%201a2733%202733%200%20004-15v-1l-1-3-2-2v1l-1%202v1c1%201%200%204-1%204l-1%204-1%205v2l-1%201c-1%200-1%201%201%201%201%202%201%202-2%202s-3%200-1-1c1-1%201-1-1-1s-2%200-1-1l1-1h-3l-4%201-4%201c0%202-2%201-2-1l-3-2-2-1-1-2c-2-2-2-2-4%201l-2%203-8-4-8-6c0-2-3%202-3%204s-4%208-6%208l-1%201-2%201v-12c-2-1%202-11%205-15l2-3c1-6%2015-22%2019-23%203%200%206%203%204%206v2l-1%201c-1-1-1-1%200%200v1c-2-1-5%204-4%205l-1%201h-1c1%201-2%205-3%204l-1%201v1l-1%201v2l-1%201v1l-1%201-1%202v2l-1%201h-1c-1%202%203%205%205%205l6%201%205%203v-2l1-3%202-2c0-5%205-6%2019-3l8%201-18-5-4-1%202-1h-1c-2%200-1-1%201-6l2-6%201-1c1%200%203-4%202-5l1-1%202-1v-3l2-1h1c-1-1%200-2%201-3l2-3c-1-2%2013-13%2015-12%202%202%203%200%202-1v-1h2c0-1%2011-6%2020-8%206-2%2010-3%2012-5%201-1-3-4-4-3h-2c-1-1%204-2%207-2l3-1a131%20131%200%200170%2014c36%2018%2065%2055%2072%2095l3%2010c2%201%202%201%200-6v-10c1-2%201-2%201%201v5l1%201%201%205c0%206%202%208%202%202%201-6%200-10-1-9l-1-1%201-1v-3c0-2%200-2-1-1s-1%200-1-2v-6l-1-4v-6l2%206%202%205v-5l1%201%201%201c1-1%201%201%201%206%200%202%200%202%201%201l1-2v-5l2%203a382%20382%200%20001%209c-2%200-2%201-1%204%200%203%200%203-2%204-3%200-3%202%200%202%201%201%202%200%202-1h3c2%203%200%204-3%203l-3%201%202%201c4%200%205%202%205%207%200%204-2%205-2%200l-1-4c-1-2-1-2-1%201%201%203%201%204-1%204l-1%201c1%201-4%206-6%205v2h-2c0-2%200-2-2%200l-3%201v1l-1%201c-1-1-12%206-15%209l-3%202-3%201-2%201-1%202h-4l-2-1v-3l1-1v-1l1-1h-1v-5l-3%203-3%205-1%201v2l-1%201h-1l1%202%201%202c1%201%201%200%201-2%200-3%200-3%201-2l3%202%202%201c3%204%2021%2012%2028%2011%203%200%204%200%207%204%202%205%205%207%208%206l1%201h-1l-1%201h-3c-2-1-9%201-9%203l-1%201-2%202-2%201c-1-1-7%204-10%207l-3%202%201-3%202-2%201-2c1-1%202-3%200-3h-2c0-2-3%201-3%203l-1%203-4%201-3%205-1%202-2%204c-1%204%202%205%208%201%205-4%2011-6%2012-5l3-1c7-6%2016-8%2021-5%203%203%203%202%204-5a149%20149%200%20015-22v-6a424%20424%200%2000-2-60l-1%204c0%202%200%202-1%200l1-4%201-3c0-1%200-2-1-1l-1-3v-1h-1c1-3-3-15-4-14v-1c0-2%200-2-1-1s-1%201-2-1c-1-3-1-4%201-2l1%201-2-4c-2-2-3-6-3-7l-2-2c-1-1-2-2-1-4v-1c-1%201-4-2-6-6s-4-5-3-1v3l-2-3-1-3-1-1h-2l-1-1v-1l-1-1-2-1c-2-3%201-2%205%201l4%203v-1l-2-2-1-3-1-2-8-10-8-10-1-1c-1%200-2%200-1-1l-1-1-3-1c0-2-4-5-5-4v-1l-1-1c-1%201-1%201%200%200%200-2%200-2-2-1l-2-1c2-1-10-8-13-8h-3l-1-2c-2%200-2%200-1%201%202%201%202%201-2%201h-1c0-1-6-6-8-6v-1l-2-1-3-1h-2l-2-1h-1l-3-1c-3-3-11-3-10-1%200%202%200%202-2%201l-1%201%203%201c2-1%202%200%202%201v3l1%201%201%201h-1c-2-1-3%200-2%203%200%202-4%201-5%200l-3-2-1-1%202-1h1l-7-1c-2%200-2%200-1-1l-1-1h-6l-1-1%202-1h-1l-3-1c-1-2-1-2%201-3l2-1h-4l-1%201-1-1-2-1h-5c0%201%201%202%202%201l4%201c1%201%200%201-4%201s-6%200-5-1c2%200%202-1%200-2-1-1-1-1-1%201h-1l-11-1-16%201v1h2c4%200%204%200%205%202l2%202v-1c-1-1-1-1%201-1l2-1v-1l1%202v1l1-1%203-1c2%200%202%200%201%201s-1%201%201%201v1c-5%200-12%201-13%203h-3l-2%202v1c1%201%201%201-1%201-4%200-8%201-7%202h-14c1%200%201%201-1%201-1%202-2%202-3%200l-3-1v3l1%201v1h-15l-2%201%203%202%201%201c-2%200-6%203-5%204s0%201-1%201c-4-1-4-2-1-3l3-2h-3l-6%201-3%201c-1-1%205-4%208-4%202%200%203%200%202-1-2-1%204-4%207-3v-1c-1-1%205-3%207-3l4-1%205-2h10c3%202%209%200%2010-2l-1-2v-1l-2-1-10%201-8%201-1%201-2%201-11%204h-4l-3%203h-1c-2-1-2-2%200-3%202-2-1-1-4%200-1%202-3%202-8%203l1%201c1%201%202%201%201%202l2%201h2l-3%201h-1l-3%201c-2-1-2-1-2%201%201%201%200%202-1%202-2%200-8%204-8%206s-13%209-14%208l-1%201v1L82%2064l-2%203%203%201c2%202%203%203%202%201h1l1-1v-1h1l-1-2c-3%200-2-2%200-2%204%200%205-1%207-3l2-2h2c2-2%201%200-1%203l-3%201-1%201c1%201-3%207-5%206l-1%204h-2v2h-3c1-1%201-1%200%200l-1-1-1-2h-2v1c-3%201-4%202-4%204%201%200%201%201%200%200l-1%203h-1v1l-1%201h-1l1%201v3c-1%201-1%201%201%201h1c-1%201-1%201%201%201h1l-1%202-2%201c-1%200-2%200-1-1v-1l-2-1-1-2%201-2-2%202c-4%205-5%206-4%207h-1v1h-1l-2%202c-2%205-3%205-3%202s8-13%2010-12l-1-2c-2-1-2-2-1-2%201-1%201%200%201%201l1-1%201-3%201-1h1c-1-1%202-5%209-12%208-10%209-12%208-12S72%2068%2073%2069c0%201-2%202-3%201-2-3%200-5%206-12%208-8%209-9%2010-6%201%202%202%202%206-3%203-3%205-5%204-6l3-4%203-2h1l1-1%201-1%203-1%202-2c2%201%201-2-1-4-1-2-2-3-3-2l1-2c2-2%202-2%204-1h3c0-1%202-3%205-4%204-2%204-2%206-1l3%202v-1c-3-2-3-4%201-7%203-2%203-2%204-1h2c0-1%202-3%204-3l4-3%203-1%205-2%202-2h-10a159%20159%200%2000-15%201l-4-1c-3%200-4%201-3%202m181%205l29%201h27v12l1%2011%201-13V6h-29l-29%201M170%2034l-10%203-4%201-1%201-2%201-6%203-9%204c-4%202-6%204-4%204v1c-1%201-2%202-1%203a302%20302%200%200148-22l3-1h-4l-10%202m131%2012c-1%202%202%204%204%203l5%201%201%202-3-1-1-1%203%204%203%202c-1-3%200-2%203%200%203%203%203%205%200%202l-3-1%201%202%201%202h-2c-2-2-2-2-2%200l3%203%201%202%201%201%201%201%201%201h2v-1h3l-4-3h-1v-1l1-2c-1-1%200-2%201-3s1-3-1-3l-3-2-1-1v-2c-1%201-3%200-4-2-3-2-3-2-5-1h-1l-2-2h-2m0%2058v3l-2-1c-2-2-2-2-3-1h-1l-1%201v3l-1-1h-2c0-1-5-1-8%201l-2-1c1-1%200-1-2-1l-4%202c-1%202-2%201-3%200h-3l-5%202c-4%202-6%203-6%201l-3%201-4%203-2%202h-2c-1%200-7%205-6%206l-1%201-2%202h-2l-2%201v2l-1%201-1%201-1%201v1h9l1-1v-3h3l1%201c2%200%2010-6%2011-7%202-3%2010-5%2013-3l1-1h2c1%200-9%207-11%207v1h-4c1%201%200%202-1%202l-2%203-2%201h-1l-7%204h-13l-1-1-1%201-1%201-1%201%202%201%205%201c2%202%203%202%204%200%205-3%208-2%206%201%200%202-3%203-12%204l-11%201-5-1h-1l1%202c1-1%201%200%200%200%200%202%200%202%204%201l13-2c9%200%2010%200%208%201-2%203-1%202%204-1%2010-4%2012-5%2013-3%202%201%202%201%203-1v-1l-1-1c0-2%207-2%2011-1%204%202%204%202%202%202h-4l-3%201h-1l-1-1-2%202%201%201h2c3-1%206%202%205%204l-2%201h-2c-1%201%200%201%203%201l5-1c2-1%205%200%204%202h8c1%201%201%201%201-1l1-1h5l2-1%201-2%202-4%203-4v-1l1-3%201-2v-1l1-2%202-2%202-2v-1c-1-1-1-1%201-2l3%201c1%202%205%206%2010%209l6%204v-5c0-5-2-10-4-12-1-1-3-3-3-6l-2-3v-1l-1-2c0%201-2%200-3-2-3-2-3-2-3%200%201%202%200%204-1%202-2-2-3-1-3%202s0%203-1%202-1-1-1%201l-1%202-1-4-1-8c-2-2-2-2-2%200m-136%2024l-1%203-1%201-1%202%202%201v2l-2-1h-2l4%203%201%204v4l1-2%201%202%201%204v-10l1-1c2%202%201-1-1-3-1-2-1-2%201-3%203%200%203-3%200-6-2-2-2-2-4%200m-80%202h-2v-1l-1%202c0%202-1%202-2%202-3-1-5%202-2%203%201%202%201%202-2%205l-2%204-1-3c-1-2-1-2-2%203-1%206%200%208%202%203l2-2%202-2c1-3%205-7%205-6l-1%203-1%201%207-3c1-2%202-2%203-2l1-1c0-2%200-2-3%200-6%202-6%201-4-2l5-5c3-1%203-1%201-1l-5%202m275%2019c0%2015%200%2017-2%2020l-1%204h1l-1%202-1-1-1-1v3h-1l-2%201-1%202-1%201c-1%201-2%2012-1%2014l2-5v-4l1%204v6h2l1-1%201-2c0-6%201-9%202-11%201-1%201-1%201%201l1%202%201-2v-6c-2-1-2-2-1-2%201-1%202-31%200-37v12m-11%2077c-1%200-2%201-1%202%200%202%200%202-1%201s-1-1-1%201c1%203-1%206-4%206l-1%201-1%203-1%202h-1v2c1%202%203%202%204%202l3%201h3l9%202%204%203v-13l-1-12c-1-1-9-2-11-1m-51%2023v3h1l-1%202-1-1-1-1h-7l-3%201%203%201%204%202c1%201%203%202%203%200h2c2%201%202%201%201%202-2%201-1%201%205%201l3%201h-3c-3%200-3%200-2%201%202%202%206%202%206%200h1c0%201%206%200%208-2l-2-3c-2%200-3%200-2-1v-1c-2-1-2%200-2%201%200%202%200%202-1%201h-2c-2%202-3%201-3-2%201-3%201-3-2-3h-1v-2h-2c-1%201-1%201%200%200%200-2-2-3-2%200M93%20314l-1%208v8h3c6%200%209-4%206-9l-4-2c-2%200-3%200-3-3l-1-2m-69%209v7h4c5%200%209-4%206-6v-4c0-3-2-5-7-5h-3v8'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVQ4yy1U+VNTVxh9/wKdjraWJRTIQkJISAKGQEIShsWSsAVblkqACiUUZBFapiCbyKKAqQTUdizI4oy1U8EFagsWpARwoBQY2QWXGcYO/8Pp9y7+8M297937zjvnfOdebm9vD3zt7u5if/8V5ubcuNTcjKrKSjivOjE4MIAeVzdaWy6x8XZ/H2ZnZ7GysoLpqSm4aT4zM4O1tTWsr6+De/ny5XuwfbahvKwMjQ2NaG1tRXV1Nb7Ky0Pl+fO43tuLjitXUHehFhVlpeh1uRgYD8zXxvoGtra2wO3s7DDA9RcvGLOy0lJUlJfDUVhIH1/AneE7mJ6exvLyMhYXFzE5MYGR+7+xPfW0vrq6is2NTWwTGI/FbW9vY39vn0krPXeOsSkl0NycXPx080dM/DmBf5aW4Ha7MfNsGg9G7uPxo0eYIjW1NTVwdnVi771KXi2TPD83h5LiYuSfPYuSkhLk5+cT20sYHhzCxaaLcDqdTN7DBw/wx5MnDPDxw4d4vvAclRUVGB97jIODgyPJvHdDgwPIzEjH6bQ0FDmKGOjPt27B1X0NFosF2dnZ1IzbjNXoyAiqv6tGGu2trKxiP2tracHbt2+PmsJrv9rVhYz0dGRlZuLMl1kMxGazISsrC18XFLByURNc3S5iXwCFQgkPDw8UFRWhs7MTdbW1WKXGvH79GtwGoV6oqUVyUhJSU1MRGxuLuLg4JCcnE7MzsBM7u92OsfEx9Pf348aNm6gh74qLS6iR61gifxsbG8jfZ0w2x3eX9y4x0QqDQY+QkBDEx8cj0WpFXk4Osc5AUmIiedmE0dFRkjyKnp4e3Lv3KyVgmKXBkpCAv54+xSvKMTc5OYnYmBikECMrgfCA+shIAjdAo9EgiZinJKfAZDSyjPLsKqgRw0ND6OvrY6rycnNZfN68eQNuYWEBOfZs8iwVZrMZMpkUZpMJ0dFm8kpBYzSMBKZWq9lPi78pxrdVVazT4+O/4/Lly4wlHx2+wczD9rY26rANCURdRQyNxihYPjuFqCgDtNpwqFVqREZEoJbMb29rR31dHQZuD9BpakMTWVFATVtbXTvK4ebmJn65e5fFJv2Lz2EidmqViuSqIZNKoVQqESiRwKDXo6Ojg850K5ovNrOj2UXp4E9SC8WGbw5jyGeHr4b6esqWDRkZGdDpdFAQkMBXAAmBhYWFQSQSMY8dDgeqSDLvY1NjI25cv442Am+mY/vuv3fg7GmZsNsyYTXFQyMOhlGjg1osh9QnABIvPwhPCGguhNjTD1KBEOFyNTSSYKhEQYhQhLIK9PaHNkiFgswccOJjAoSJghEuCYFWrIROqmLzSJkGukAVG0N8AyH3DKASQnrCD7IT/gj6xB/Sjz+l8mPvZfTs/4EnOIWPGAn6GCSbT8Gk0uGUzgyLIQZxWiN75ucGxUkGJPcSsgoicL6CvUVsZD8hQH7OhQrlbEHuTRtps+QjX7aoFEjYx/4feiHYRwQZD+J1tIdfUwjEDEjpKwGPoQkIQmiAHJz771nMu+ewMDePa84foFKGIC4mFqdtp1HzfQ2dljwESWUIFEugofgoKZthmlCYKZtSapgyWIGuDrrCdvewsvwv5XBjg12cW3QvDg4OsuRbrRboKHdGkxkNdHs7Ch2QSgMp9DIIhQGUzZMI12ppLsTx48eg10cyjMPDQ/wP/QqzcxXbjOgAAAAASUVORK5CYII=","aspectRatio":1,"src":"/static/f1d142cb392fdfeebcdc10bf2244c830/3ddd4/basic-cover.png","srcSet":"/static/f1d142cb392fdfeebcdc10bf2244c830/078a8/basic-cover.png 163w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/e56da/basic-cover.png 327w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/3ddd4/basic-cover.png 653w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/c5cc7/basic-cover.png 980w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/6050d/basic-cover.png 1200w","srcWebp":"/static/f1d142cb392fdfeebcdc10bf2244c830/0acdf/basic-cover.webp","srcSetWebp":"/static/f1d142cb392fdfeebcdc10bf2244c830/ac59e/basic-cover.webp 163w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/7660b/basic-cover.webp 327w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/0acdf/basic-cover.webp 653w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/75470/basic-cover.webp 980w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/9000d/basic-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='M121%202h2l1%201h-1v1c1%202%200%203-2%201-1-1-1-1-1%201v1c-1%200-2-1-1-2%200-1-1-1-6%201-3%202-4%202-3%204%200%202-1%203-2%201l-2-2-1%201v3l1%202c0%202%200%202-2-1s-4-4-4-2h-1l-1%201v3c3%202%202%204-1%203l-2%201v3c0%203%200%203-2%202l-3-2c-1%201-1%201%201%202l3%201h-3c-4-1-4%201-1%202%202%200%202%201%201%201h-5v5c-1%201-2%200-3-1h-2v2c-1-1-2%200-2%201s1%202%202%201v2c1%201%200%202-2%204l-1%202v2h-1c-2-2-3-1-2%202%200%202%200%203-1%202h-3l-1%202-1%201-1%201c-2%200-3%203-1%204s1%202-1%202h-2v1c2%200%203%202%202%203s-3%200-3-2c0-1-3-3-4-2v3h-1c0-2-2-1-2%201-1%201-1%201%202%201%201-1%203%200%205%201l3%201h-5l-1%201c-2%200-5%203-4%206l-2%202h-1l-1%203-3%204v-1c0-2%200-2-2-1l-2%202c0%201%200%202-2%202s-8%2012-6%2014l-1%201v1l-1%201h-2l-2%202c-2%200-2%200-1%201l2%202%201%201%204%201c1%202%201%202-1%202l-4-1h-1l2%203%201%201%201%201%203%201c2%202%202%202-1%202l-3-1-1-2-2-2-1%201v5l-1-1c-1-1-1%200-1%202v3l-1%202%201%202v3l1%202%201%201%201%201-2%201c-4-1-4%202-5%2017a379%20379%200%2001-1%2018v1l-1%205c0%205%200%206-2%205-3%200-4%202-2%205%201%202%201%203-1%203-2%201-3%204%200%206l1%205c0%203%200%204%202%204%203%200%204%203%206%2014%202%2017%2011%2037%2022%2055l8%2012a502%20502%200%2001-53%200H0v75h68l3%203c4%203%205%2012%202%2015-2%200-2%201-1%201v1c-2%200-2%209%200%2013l1%203v2l109%201-6-5-11-8a216%20216%200%2000-28-19l-1-1c-2%200-4%200-3-1l-2-3-2-2h8c7%200%209%200%209%202l2%201%201%201h1l2%201%2011%205-2-3-2-1h3c2%201%203%201%202%202%200%202%200%202%201%201l2%201%201%201%2011%207a211%20211%200%200121%2018l3%203h34c22%200%2033%200%2032-1v-3c2-3%204-2%205%201l1%203h16c14%200%2016%200%2015-1v-2l2%202%2031%201h30l-6-9-11-11c-3-2-3-3-3-7l-1-8-2-4h55v-75h-28v-2c2-9%202-11-1-18l-4-5h-2c-2%200-2%200-2%202v1c-2-2-2-2-2%203-1%203-2%204-3%201%200-3-1-3-1%200v4l-1-4-1-3v4c-1%203-1%204-3%204l-2%201v2h-2c-1-1-3-2-6%200h-3l-2%202-1%201-2-1v2h-1l-2-1v-1l-1-4c-2-2-3-1-2%201v5l-2-2c-1-2-1-2-2-1l-3%201-4%201h-1v-1l1-2v-1h-4l-2%201c-2-1-4%200-2%201%201%201%201%201-2%201-3%201-5-2-3-3l2-2-2%201h-3l-1%201-2%201-3-2h-3l-1-1-2-1h2l2-1c1-2-1-3-4-3v2l-1%201-1%203-1-1v-2c-3%200-4%200-3-1l-1-1-1%202v1h-3c-1-1-2-3-1-4h-1c-1%202-3%202-5%202-3-1-6%201-6%203l-2%201c-1%201%200%201%201%201l3%201-8-1c-3-3-1-5%202-4h1l1-1c0%201%202%200%203-2l1-2h-2c1-1-5-2-6-1-2%201-6%200-6-2h5c-1%200%200-4%202-5s2-1%202%201l-1%201c-1-1-3%201-2%201%202%202%205%202%206-1s1-4-1-2c0%202-1%202-1%201l2-3c1-1%201-1-1-3h-2l-1%202v-2c0-2-1-3-2-1l-3%201v-5l-2%203-2%203-1%201-2%201h-1c0-2-3-1-3%201-1%202-1%202%201%202%201%200%202%202%200%203l-1-1h-1l-3%201c-2%200-2%200%200%201%201%201%201%201-1%201-3%200-3%200-2-2l-1-2-1%201-2%201c-1%200-2%200-1-1l1-1-1-1c0%201-3-1-2-2l-1-1-1%201-2%201h-2l2-2c2-1%203-5%201-3l-1-1h-1l-3%202h-1l1%201%201%202%201%202v1l-2%201c-1-1-2%200-3%201l1-5-1-2%201-5v-2l-1-2c1-2%200-3-2-1-1%201-1%201-1-1%201-4%203-7%204-6l4%202c3%202%203%202%203%200l-3-4c-4-3-6-5-5-6h1l3%201c2%200%202%200%203-3l-1-3c-1%201-1%200%200%200l-1-2c-2%201-2-2%200-3l1%202h2l3-2%202-5c-1-2%205-12%205-10v3c-1%201-1%201%201%201%203-1%205%201%203%202h-1l-2%201c-1%203-1%203%201%202%202%200%202%200%201%201h-4c-1-1-5%203-4%205h3l2%203v3h7l-1-2c-2%200-2%200-1-2l2-3%201-1c-1-1%200-1%201-1v2h2c4-1%208-1%208%201h-3c-2%200-4%203-1%203h1l2-1%201%201%202%202c1%200%202%200%201-1l-2-2%201-2%201%202h6l-3%202-2%203v1l-2-1-2-1c-1-1-1%200-1%201l2%202c2%200%202%200%201%202-1%201-1%201%201%201l2-2%203-3%201%201v1l1-1v-2l2-2%201%201v2c1%201%200%203-2%203l-1%202-3%201c-3%200-5%203-3%203l1%202h-4l1%203c0%201%204-1%205-3l-1-2c-1-1%200-1%202-1%205%200%207%201%207%203%200%203-1%205-2%204v1l-1%202v-1l-3-1-3%202%201%202c1-1%202%200%203%201h2c-1-3%201-2%204%200%202%202%204%201%202-1l-1-11-2-11c-2-2%200-7%202-6l2-1-3-1c-2%200-2%200-1-1s1-1-1-2v-6c0-2%200-3-2-3v-2l1-3-2%202c-1%202-1%202-1%200l1-3%201-1c-1-1%200-2%202-2l2%201h5l1-2%202-4c2-2%203-6%201-6l-1-1%201-2%201-1h-1l-3-2-3-2v-2c-2-1-4%201-3%203h-2l1%202c-1%201-5-2-5-4h-2v2h-1v2l-1-1-1-1-2%201%201%201%201%201c-1%201-3%203-4%202l-1%201-1%201v-4l-1%202c-2%203%200%205%203%203s5-1%205%200l-1%201h-1l1%201%202%202h-5l2%201c2%200%202%200%201%201v1l1%201v1l4%203-2%201v-2h-7c1%201%201%201-1%201l-1-2c1-1%201-1%200%200l-1-1v-1l-1%201h-3l-3-1c-1-2-1-2-2-1-2%202-3%202-3%200l-1%201v2c1%201%200%201-1%201l-3-1v-2c1%200%201-1-1-1-1-2-2-2-3%200s-2%202-2%201h-2l-4-2c-2-2-3-2-7-3l1-1v-1h-2l-1-3c-1-4-1-4%201-6%203-4%202-6-1-8-2-1-4%200-6%202h-4c-3-2-6-3-6-1h-1v-5c-2-1-2-3-1-5v-3l2-2v-2c-2-2-5-18-4-20v-3c-2%200-2-1-1-1l1-1%201-5%202-11%201-6h-5l-5-1-1-6c-2-4-2-4-1-7%202-2%202-3-1-7-1-2-3-3-3-2l1%202v1c-2%200-7%206-6%207l-1%201-1-1c0-1-1-2-2-1-3%200-3%201-3%204%200%202%200%203-1%202l-1-2v-1l-1-1c0-1-1-2-3-2h-2l3%203%201%202-5%205-1%201h-1c0%201-1%202-2%201-1%200-1%201%201%202%202%202%202%202%201%203l-1%201h-4l-2-2c-2%200-1%203%200%203%201%201%202%202%201%203%200%201%200%202%202%202v1c-1%201-2%200-5-1l-4-1-1%201a2733%202733%200%20004-15v-1l-1-3-2-2v1l-1%202v1c1%201%200%204-1%204l-1%204-1%205v2l-1%201c-1%200-1%201%201%201%201%202%201%202-2%202s-3%200-1-1c1-1%201-1-1-1s-2%200-1-1l1-1h-3l-4%201-4%201c0%202-2%201-2-1l-3-2-2-1-1-2c-2-2-2-2-4%201l-2%203-8-4-8-6c0-2-3%202-3%204s-4%208-6%208l-1%201-2%201v-12c-2-1%202-11%205-15l2-3c1-6%2015-22%2019-23%203%200%206%203%204%206v2l-1%201c-1-1-1-1%200%200v1c-2-1-5%204-4%205l-1%201h-1c1%201-2%205-3%204l-1%201v1l-1%201v2l-1%201v1l-1%201-1%202v2l-1%201h-1c-1%202%203%205%205%205l6%201%205%203v-2l1-3%202-2c0-5%205-6%2019-3l8%201-18-5-4-1%202-1h-1c-2%200-1-1%201-6l2-6%201-1c1%200%203-4%202-5l1-1%202-1v-3l2-1h1c-1-1%200-2%201-3l2-3c-1-2%2013-13%2015-12%202%202%203%200%202-1v-1h2c0-1%2011-6%2020-8%206-2%2010-3%2012-5%201-1-3-4-4-3h-2c-1-1%204-2%207-2l3-1a131%20131%200%200170%2014c36%2018%2065%2055%2072%2095l3%2010c2%201%202%201%200-6v-10c1-2%201-2%201%201v5l1%201%201%205c0%206%202%208%202%202%201-6%200-10-1-9l-1-1%201-1v-3c0-2%200-2-1-1s-1%200-1-2v-6l-1-4v-6l2%206%202%205v-5l1%201%201%201c1-1%201%201%201%206%200%202%200%202%201%201l1-2v-5l2%203a382%20382%200%20001%209c-2%200-2%201-1%204%200%203%200%203-2%204-3%200-3%202%200%202%201%201%202%200%202-1h3c2%203%200%204-3%203l-3%201%202%201c4%200%205%202%205%207%200%204-2%205-2%200l-1-4c-1-2-1-2-1%201%201%203%201%204-1%204l-1%201c1%201-4%206-6%205v2h-2c0-2%200-2-2%200l-3%201v1l-1%201c-1-1-12%206-15%209l-3%202-3%201-2%201-1%202h-4l-2-1v-3l1-1v-1l1-1h-1v-5l-3%203-3%205-1%201v2l-1%201h-1l1%202%201%202c1%201%201%200%201-2%200-3%200-3%201-2l3%202%202%201c3%204%2021%2012%2028%2011%203%200%204%200%207%204%202%205%205%207%208%206l1%201h-1l-1%201h-3c-2-1-9%201-9%203l-1%201-2%202-2%201c-1-1-7%204-10%207l-3%202%201-3%202-2%201-2c1-1%202-3%200-3h-2c0-2-3%201-3%203l-1%203-4%201-3%205-1%202-2%204c-1%204%202%205%208%201%205-4%2011-6%2012-5l3-1c7-6%2016-8%2021-5%203%203%203%202%204-5a149%20149%200%20015-22v-6a424%20424%200%2000-2-60l-1%204c0%202%200%202-1%200l1-4%201-3c0-1%200-2-1-1l-1-3v-1h-1c1-3-3-15-4-14v-1c0-2%200-2-1-1s-1%201-2-1c-1-3-1-4%201-2l1%201-2-4c-2-2-3-6-3-7l-2-2c-1-1-2-2-1-4v-1c-1%201-4-2-6-6s-4-5-3-1v3l-2-3-1-3-1-1h-2l-1-1v-1l-1-1-2-1c-2-3%201-2%205%201l4%203v-1l-2-2-1-3-1-2-8-10-8-10-1-1c-1%200-2%200-1-1l-1-1-3-1c0-2-4-5-5-4v-1l-1-1c-1%201-1%201%200%200%200-2%200-2-2-1l-2-1c2-1-10-8-13-8h-3l-1-2c-2%200-2%200-1%201%202%201%202%201-2%201h-1c0-1-6-6-8-6v-1l-2-1-3-1h-2l-2-1h-1l-3-1c-3-3-11-3-10-1%200%202%200%202-2%201l-1%201%203%201c2-1%202%200%202%201v3l1%201%201%201h-1c-2-1-3%200-2%203%200%202-4%201-5%200l-3-2-1-1%202-1h1l-7-1c-2%200-2%200-1-1l-1-1h-6l-1-1%202-1h-1l-3-1c-1-2-1-2%201-3l2-1h-4l-1%201-1-1-2-1h-5c0%201%201%202%202%201l4%201c1%201%200%201-4%201s-6%200-5-1c2%200%202-1%200-2-1-1-1-1-1%201h-1l-11-1-16%201v1h2c4%200%204%200%205%202l2%202v-1c-1-1-1-1%201-1l2-1v-1l1%202v1l1-1%203-1c2%200%202%200%201%201s-1%201%201%201v1c-5%200-12%201-13%203h-3l-2%202v1c1%201%201%201-1%201-4%200-8%201-7%202h-14c1%200%201%201-1%201-1%202-2%202-3%200l-3-1v3l1%201v1h-15l-2%201%203%202%201%201c-2%200-6%203-5%204s0%201-1%201c-4-1-4-2-1-3l3-2h-3l-6%201-3%201c-1-1%205-4%208-4%202%200%203%200%202-1-2-1%204-4%207-3v-1c-1-1%205-3%207-3l4-1%205-2h10c3%202%209%200%2010-2l-1-2v-1l-2-1-10%201-8%201-1%201-2%201-11%204h-4l-3%203h-1c-2-1-2-2%200-3%202-2-1-1-4%200-1%202-3%202-8%203l1%201c1%201%202%201%201%202l2%201h2l-3%201h-1l-3%201c-2-1-2-1-2%201%201%201%200%202-1%202-2%200-8%204-8%206s-13%209-14%208l-1%201v1L82%2064l-2%203%203%201c2%202%203%203%202%201h1l1-1v-1h1l-1-2c-3%200-2-2%200-2%204%200%205-1%207-3l2-2h2c2-2%201%200-1%203l-3%201-1%201c1%201-3%207-5%206l-1%204h-2v2h-3c1-1%201-1%200%200l-1-1-1-2h-2v1c-3%201-4%202-4%204%201%200%201%201%200%200l-1%203h-1v1l-1%201h-1l1%201v3c-1%201-1%201%201%201h1c-1%201-1%201%201%201h1l-1%202-2%201c-1%200-2%200-1-1v-1l-2-1-1-2%201-2-2%202c-4%205-5%206-4%207h-1v1h-1l-2%202c-2%205-3%205-3%202s8-13%2010-12l-1-2c-2-1-2-2-1-2%201-1%201%200%201%201l1-1%201-3%201-1h1c-1-1%202-5%209-12%208-10%209-12%208-12S72%2068%2073%2069c0%201-2%202-3%201-2-3%200-5%206-12%208-8%209-9%2010-6%201%202%202%202%206-3%203-3%205-5%204-6l3-4%203-2h1l1-1%201-1%203-1%202-2c2%201%201-2-1-4-1-2-2-3-3-2l1-2c2-2%202-2%204-1h3c0-1%202-3%205-4%204-2%204-2%206-1l3%202v-1c-3-2-3-4%201-7%203-2%203-2%204-1h2c0-1%202-3%204-3l4-3%203-1%205-2%202-2h-10a159%20159%200%2000-15%201l-4-1c-3%200-4%201-3%202m181%205l29%201h27v12l1%2011%201-13V6h-29l-29%201M170%2034l-10%203-4%201-1%201-2%201-6%203-9%204c-4%202-6%204-4%204v1c-1%201-2%202-1%203a302%20302%200%200148-22l3-1h-4l-10%202m131%2012c-1%202%202%204%204%203l5%201%201%202-3-1-1-1%203%204%203%202c-1-3%200-2%203%200%203%203%203%205%200%202l-3-1%201%202%201%202h-2c-2-2-2-2-2%200l3%203%201%202%201%201%201%201%201%201h2v-1h3l-4-3h-1v-1l1-2c-1-1%200-2%201-3s1-3-1-3l-3-2-1-1v-2c-1%201-3%200-4-2-3-2-3-2-5-1h-1l-2-2h-2m0%2058v3l-2-1c-2-2-2-2-3-1h-1l-1%201v3l-1-1h-2c0-1-5-1-8%201l-2-1c1-1%200-1-2-1l-4%202c-1%202-2%201-3%200h-3l-5%202c-4%202-6%203-6%201l-3%201-4%203-2%202h-2c-1%200-7%205-6%206l-1%201-2%202h-2l-2%201v2l-1%201-1%201-1%201v1h9l1-1v-3h3l1%201c2%200%2010-6%2011-7%202-3%2010-5%2013-3l1-1h2c1%200-9%207-11%207v1h-4c1%201%200%202-1%202l-2%203-2%201h-1l-7%204h-13l-1-1-1%201-1%201-1%201%202%201%205%201c2%202%203%202%204%200%205-3%208-2%206%201%200%202-3%203-12%204l-11%201-5-1h-1l1%202c1-1%201%200%200%200%200%202%200%202%204%201l13-2c9%200%2010%200%208%201-2%203-1%202%204-1%2010-4%2012-5%2013-3%202%201%202%201%203-1v-1l-1-1c0-2%207-2%2011-1%204%202%204%202%202%202h-4l-3%201h-1l-1-1-2%202%201%201h2c3-1%206%202%205%204l-2%201h-2c-1%201%200%201%203%201l5-1c2-1%205%200%204%202h8c1%201%201%201%201-1l1-1h5l2-1%201-2%202-4%203-4v-1l1-3%201-2v-1l1-2%202-2%202-2v-1c-1-1-1-1%201-2l3%201c1%202%205%206%2010%209l6%204v-5c0-5-2-10-4-12-1-1-3-3-3-6l-2-3v-1l-1-2c0%201-2%200-3-2-3-2-3-2-3%200%201%202%200%204-1%202-2-2-3-1-3%202s0%203-1%202-1-1-1%201l-1%202-1-4-1-8c-2-2-2-2-2%200m-136%2024l-1%203-1%201-1%202%202%201v2l-2-1h-2l4%203%201%204v4l1-2%201%202%201%204v-10l1-1c2%202%201-1-1-3-1-2-1-2%201-3%203%200%203-3%200-6-2-2-2-2-4%200m-80%202h-2v-1l-1%202c0%202-1%202-2%202-3-1-5%202-2%203%201%202%201%202-2%205l-2%204-1-3c-1-2-1-2-2%203-1%206%200%208%202%203l2-2%202-2c1-3%205-7%205-6l-1%203-1%201%207-3c1-2%202-2%203-2l1-1c0-2%200-2-3%200-6%202-6%201-4-2l5-5c3-1%203-1%201-1l-5%202m275%2019c0%2015%200%2017-2%2020l-1%204h1l-1%202-1-1-1-1v3h-1l-2%201-1%202-1%201c-1%201-2%2012-1%2014l2-5v-4l1%204v6h2l1-1%201-2c0-6%201-9%202-11%201-1%201-1%201%201l1%202%201-2v-6c-2-1-2-2-1-2%201-1%202-31%200-37v12m-11%2077c-1%200-2%201-1%202%200%202%200%202-1%201s-1-1-1%201c1%203-1%206-4%206l-1%201-1%203-1%202h-1v2c1%202%203%202%204%202l3%201h3l9%202%204%203v-13l-1-12c-1-1-9-2-11-1m-51%2023v3h1l-1%202-1-1-1-1h-7l-3%201%203%201%204%202c1%201%203%202%203%200h2c2%201%202%201%201%202-2%201-1%201%205%201l3%201h-3c-3%200-3%200-2%201%202%202%206%202%206%200h1c0%201%206%200%208-2l-2-3c-2%200-3%200-2-1v-1c-2-1-2%200-2%201%200%202%200%202-1%201h-2c-2%202-3%201-3-2%201-3%201-3-2-3h-1v-2h-2c-1%201-1%201%200%200%200-2-2-3-2%200M93%20314l-1%208v8h3c6%200%209-4%206-9l-4-2c-2%200-3%200-3-3l-1-2m-69%209v7h4c5%200%209-4%206-6v-4c0-3-2-5-7-5h-3v8'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVQ4yy1U+VNTVxh9/wKdjraWJRTIQkJISAKGQEIShsWSsAVblkqACiUUZBFapiCbyKKAqQTUdizI4oy1U8EFagsWpARwoBQY2QWXGcYO/8Pp9y7+8M297937zjvnfOdebm9vD3zt7u5if/8V5ubcuNTcjKrKSjivOjE4MIAeVzdaWy6x8XZ/H2ZnZ7GysoLpqSm4aT4zM4O1tTWsr6+De/ny5XuwfbahvKwMjQ2NaG1tRXV1Nb7Ky0Pl+fO43tuLjitXUHehFhVlpeh1uRgYD8zXxvoGtra2wO3s7DDA9RcvGLOy0lJUlJfDUVhIH1/AneE7mJ6exvLyMhYXFzE5MYGR+7+xPfW0vrq6is2NTWwTGI/FbW9vY39vn0krPXeOsSkl0NycXPx080dM/DmBf5aW4Ha7MfNsGg9G7uPxo0eYIjW1NTVwdnVi771KXi2TPD83h5LiYuSfPYuSkhLk5+cT20sYHhzCxaaLcDqdTN7DBw/wx5MnDPDxw4d4vvAclRUVGB97jIODgyPJvHdDgwPIzEjH6bQ0FDmKGOjPt27B1X0NFosF2dnZ1IzbjNXoyAiqv6tGGu2trKxiP2tracHbt2+PmsJrv9rVhYz0dGRlZuLMl1kMxGazISsrC18XFLByURNc3S5iXwCFQgkPDw8UFRWhs7MTdbW1WKXGvH79GtwGoV6oqUVyUhJSU1MRGxuLuLg4JCcnE7MzsBM7u92OsfEx9Pf348aNm6gh74qLS6iR61gifxsbG8jfZ0w2x3eX9y4x0QqDQY+QkBDEx8cj0WpFXk4Osc5AUmIiedmE0dFRkjyKnp4e3Lv3KyVgmKXBkpCAv54+xSvKMTc5OYnYmBikECMrgfCA+shIAjdAo9EgiZinJKfAZDSyjPLsKqgRw0ND6OvrY6rycnNZfN68eQNuYWEBOfZs8iwVZrMZMpkUZpMJ0dFm8kpBYzSMBKZWq9lPi78pxrdVVazT4+O/4/Lly4wlHx2+wczD9rY26rANCURdRQyNxihYPjuFqCgDtNpwqFVqREZEoJbMb29rR31dHQZuD9BpakMTWVFATVtbXTvK4ebmJn65e5fFJv2Lz2EidmqViuSqIZNKoVQqESiRwKDXo6Ojg850K5ovNrOj2UXp4E9SC8WGbw5jyGeHr4b6esqWDRkZGdDpdFAQkMBXAAmBhYWFQSQSMY8dDgeqSDLvY1NjI25cv442Am+mY/vuv3fg7GmZsNsyYTXFQyMOhlGjg1osh9QnABIvPwhPCGguhNjTD1KBEOFyNTSSYKhEQYhQhLIK9PaHNkiFgswccOJjAoSJghEuCYFWrIROqmLzSJkGukAVG0N8AyH3DKASQnrCD7IT/gj6xB/Sjz+l8mPvZfTs/4EnOIWPGAn6GCSbT8Gk0uGUzgyLIQZxWiN75ucGxUkGJPcSsgoicL6CvUVsZD8hQH7OhQrlbEHuTRtps+QjX7aoFEjYx/4feiHYRwQZD+J1tIdfUwjEDEjpKwGPoQkIQmiAHJz771nMu+ewMDePa84foFKGIC4mFqdtp1HzfQ2dljwESWUIFEugofgoKZthmlCYKZtSapgyWIGuDrrCdvewsvwv5XBjg12cW3QvDg4OsuRbrRboKHdGkxkNdHs7Ch2QSgMp9DIIhQGUzZMI12ppLsTx48eg10cyjMPDQ/wP/QqzcxXbjOgAAAAASUVORK5CYII=","aspectRatio":1,"src":"/static/f1d142cb392fdfeebcdc10bf2244c830/502b1/basic-cover.png","srcSet":"/static/f1d142cb392fdfeebcdc10bf2244c830/f2e6d/basic-cover.png 114w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/4ddba/basic-cover.png 229w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/502b1/basic-cover.png 457w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/7ddc2/basic-cover.png 686w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/435bf/basic-cover.png 914w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/6050d/basic-cover.png 1200w","srcWebp":"/static/f1d142cb392fdfeebcdc10bf2244c830/15384/basic-cover.webp","srcSetWebp":"/static/f1d142cb392fdfeebcdc10bf2244c830/31fce/basic-cover.webp 114w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/e3e25/basic-cover.webp 229w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/15384/basic-cover.webp 457w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/0258d/basic-cover.webp 686w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/64ea2/basic-cover.webp 914w,\n/static/f1d142cb392fdfeebcdc10bf2244c830/9000d/basic-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='M121%202h2l1%201h-1v1c1%202%200%203-2%201-1-1-1-1-1%201v1c-1%200-2-1-1-2%200-1-1-1-6%201-3%202-4%202-3%204%200%202-1%203-2%201l-2-2-1%201v3l1%202c0%202%200%202-2-1s-4-4-4-2h-1l-1%201v3c3%202%202%204-1%203l-2%201v3c0%203%200%203-2%202l-3-2c-1%201-1%201%201%202l3%201h-3c-4-1-4%201-1%202%202%200%202%201%201%201h-5v5c-1%201-2%200-3-1h-2v2c-1-1-2%200-2%201s1%202%202%201v2c1%201%200%202-2%204l-1%202v2h-1c-2-2-3-1-2%202%200%202%200%203-1%202h-3l-1%202-1%201-1%201c-2%200-3%203-1%204s1%202-1%202h-2v1c2%200%203%202%202%203s-3%200-3-2c0-1-3-3-4-2v3h-1c0-2-2-1-2%201-1%201-1%201%202%201%201-1%203%200%205%201l3%201h-5l-1%201c-2%200-5%203-4%206l-2%202h-1l-1%203-3%204v-1c0-2%200-2-2-1l-2%202c0%201%200%202-2%202s-8%2012-6%2014l-1%201v1l-1%201h-2l-2%202c-2%200-2%200-1%201l2%202%201%201%204%201c1%202%201%202-1%202l-4-1h-1l2%203%201%201%201%201%203%201c2%202%202%202-1%202l-3-1-1-2-2-2-1%201v5l-1-1c-1-1-1%200-1%202v3l-1%202%201%202v3l1%202%201%201%201%201-2%201c-4-1-4%202-5%2017a379%20379%200%2001-1%2018v1l-1%205c0%205%200%206-2%205-3%200-4%202-2%205%201%202%201%203-1%203-2%201-3%204%200%206l1%205c0%203%200%204%202%204%203%200%204%203%206%2014%202%2017%2011%2037%2022%2055l8%2012a502%20502%200%2001-53%200H0v75h68l3%203c4%203%205%2012%202%2015-2%200-2%201-1%201v1c-2%200-2%209%200%2013l1%203v2l109%201-6-5-11-8a216%20216%200%2000-28-19l-1-1c-2%200-4%200-3-1l-2-3-2-2h8c7%200%209%200%209%202l2%201%201%201h1l2%201%2011%205-2-3-2-1h3c2%201%203%201%202%202%200%202%200%202%201%201l2%201%201%201%2011%207a211%20211%200%200121%2018l3%203h34c22%200%2033%200%2032-1v-3c2-3%204-2%205%201l1%203h16c14%200%2016%200%2015-1v-2l2%202%2031%201h30l-6-9-11-11c-3-2-3-3-3-7l-1-8-2-4h55v-75h-28v-2c2-9%202-11-1-18l-4-5h-2c-2%200-2%200-2%202v1c-2-2-2-2-2%203-1%203-2%204-3%201%200-3-1-3-1%200v4l-1-4-1-3v4c-1%203-1%204-3%204l-2%201v2h-2c-1-1-3-2-6%200h-3l-2%202-1%201-2-1v2h-1l-2-1v-1l-1-4c-2-2-3-1-2%201v5l-2-2c-1-2-1-2-2-1l-3%201-4%201h-1v-1l1-2v-1h-4l-2%201c-2-1-4%200-2%201%201%201%201%201-2%201-3%201-5-2-3-3l2-2-2%201h-3l-1%201-2%201-3-2h-3l-1-1-2-1h2l2-1c1-2-1-3-4-3v2l-1%201-1%203-1-1v-2c-3%200-4%200-3-1l-1-1-1%202v1h-3c-1-1-2-3-1-4h-1c-1%202-3%202-5%202-3-1-6%201-6%203l-2%201c-1%201%200%201%201%201l3%201-8-1c-3-3-1-5%202-4h1l1-1c0%201%202%200%203-2l1-2h-2c1-1-5-2-6-1-2%201-6%200-6-2h5c-1%200%200-4%202-5s2-1%202%201l-1%201c-1-1-3%201-2%201%202%202%205%202%206-1s1-4-1-2c0%202-1%202-1%201l2-3c1-1%201-1-1-3h-2l-1%202v-2c0-2-1-3-2-1l-3%201v-5l-2%203-2%203-1%201-2%201h-1c0-2-3-1-3%201-1%202-1%202%201%202%201%200%202%202%200%203l-1-1h-1l-3%201c-2%200-2%200%200%201%201%201%201%201-1%201-3%200-3%200-2-2l-1-2-1%201-2%201c-1%200-2%200-1-1l1-1-1-1c0%201-3-1-2-2l-1-1-1%201-2%201h-2l2-2c2-1%203-5%201-3l-1-1h-1l-3%202h-1l1%201%201%202%201%202v1l-2%201c-1-1-2%200-3%201l1-5-1-2%201-5v-2l-1-2c1-2%200-3-2-1-1%201-1%201-1-1%201-4%203-7%204-6l4%202c3%202%203%202%203%200l-3-4c-4-3-6-5-5-6h1l3%201c2%200%202%200%203-3l-1-3c-1%201-1%200%200%200l-1-2c-2%201-2-2%200-3l1%202h2l3-2%202-5c-1-2%205-12%205-10v3c-1%201-1%201%201%201%203-1%205%201%203%202h-1l-2%201c-1%203-1%203%201%202%202%200%202%200%201%201h-4c-1-1-5%203-4%205h3l2%203v3h7l-1-2c-2%200-2%200-1-2l2-3%201-1c-1-1%200-1%201-1v2h2c4-1%208-1%208%201h-3c-2%200-4%203-1%203h1l2-1%201%201%202%202c1%200%202%200%201-1l-2-2%201-2%201%202h6l-3%202-2%203v1l-2-1-2-1c-1-1-1%200-1%201l2%202c2%200%202%200%201%202-1%201-1%201%201%201l2-2%203-3%201%201v1l1-1v-2l2-2%201%201v2c1%201%200%203-2%203l-1%202-3%201c-3%200-5%203-3%203l1%202h-4l1%203c0%201%204-1%205-3l-1-2c-1-1%200-1%202-1%205%200%207%201%207%203%200%203-1%205-2%204v1l-1%202v-1l-3-1-3%202%201%202c1-1%202%200%203%201h2c-1-3%201-2%204%200%202%202%204%201%202-1l-1-11-2-11c-2-2%200-7%202-6l2-1-3-1c-2%200-2%200-1-1s1-1-1-2v-6c0-2%200-3-2-3v-2l1-3-2%202c-1%202-1%202-1%200l1-3%201-1c-1-1%200-2%202-2l2%201h5l1-2%202-4c2-2%203-6%201-6l-1-1%201-2%201-1h-1l-3-2-3-2v-2c-2-1-4%201-3%203h-2l1%202c-1%201-5-2-5-4h-2v2h-1v2l-1-1-1-1-2%201%201%201%201%201c-1%201-3%203-4%202l-1%201-1%201v-4l-1%202c-2%203%200%205%203%203s5-1%205%200l-1%201h-1l1%201%202%202h-5l2%201c2%200%202%200%201%201v1l1%201v1l4%203-2%201v-2h-7c1%201%201%201-1%201l-1-2c1-1%201-1%200%200l-1-1v-1l-1%201h-3l-3-1c-1-2-1-2-2-1-2%202-3%202-3%200l-1%201v2c1%201%200%201-1%201l-3-1v-2c1%200%201-1-1-1-1-2-2-2-3%200s-2%202-2%201h-2l-4-2c-2-2-3-2-7-3l1-1v-1h-2l-1-3c-1-4-1-4%201-6%203-4%202-6-1-8-2-1-4%200-6%202h-4c-3-2-6-3-6-1h-1v-5c-2-1-2-3-1-5v-3l2-2v-2c-2-2-5-18-4-20v-3c-2%200-2-1-1-1l1-1%201-5%202-11%201-6h-5l-5-1-1-6c-2-4-2-4-1-7%202-2%202-3-1-7-1-2-3-3-3-2l1%202v1c-2%200-7%206-6%207l-1%201-1-1c0-1-1-2-2-1-3%200-3%201-3%204%200%202%200%203-1%202l-1-2v-1l-1-1c0-1-1-2-3-2h-2l3%203%201%202-5%205-1%201h-1c0%201-1%202-2%201-1%200-1%201%201%202%202%202%202%202%201%203l-1%201h-4l-2-2c-2%200-1%203%200%203%201%201%202%202%201%203%200%201%200%202%202%202v1c-1%201-2%200-5-1l-4-1-1%201a2733%202733%200%20004-15v-1l-1-3-2-2v1l-1%202v1c1%201%200%204-1%204l-1%204-1%205v2l-1%201c-1%200-1%201%201%201%201%202%201%202-2%202s-3%200-1-1c1-1%201-1-1-1s-2%200-1-1l1-1h-3l-4%201-4%201c0%202-2%201-2-1l-3-2-2-1-1-2c-2-2-2-2-4%201l-2%203-8-4-8-6c0-2-3%202-3%204s-4%208-6%208l-1%201-2%201v-12c-2-1%202-11%205-15l2-3c1-6%2015-22%2019-23%203%200%206%203%204%206v2l-1%201c-1-1-1-1%200%200v1c-2-1-5%204-4%205l-1%201h-1c1%201-2%205-3%204l-1%201v1l-1%201v2l-1%201v1l-1%201-1%202v2l-1%201h-1c-1%202%203%205%205%205l6%201%205%203v-2l1-3%202-2c0-5%205-6%2019-3l8%201-18-5-4-1%202-1h-1c-2%200-1-1%201-6l2-6%201-1c1%200%203-4%202-5l1-1%202-1v-3l2-1h1c-1-1%200-2%201-3l2-3c-1-2%2013-13%2015-12%202%202%203%200%202-1v-1h2c0-1%2011-6%2020-8%206-2%2010-3%2012-5%201-1-3-4-4-3h-2c-1-1%204-2%207-2l3-1a131%20131%200%200170%2014c36%2018%2065%2055%2072%2095l3%2010c2%201%202%201%200-6v-10c1-2%201-2%201%201v5l1%201%201%205c0%206%202%208%202%202%201-6%200-10-1-9l-1-1%201-1v-3c0-2%200-2-1-1s-1%200-1-2v-6l-1-4v-6l2%206%202%205v-5l1%201%201%201c1-1%201%201%201%206%200%202%200%202%201%201l1-2v-5l2%203a382%20382%200%20001%209c-2%200-2%201-1%204%200%203%200%203-2%204-3%200-3%202%200%202%201%201%202%200%202-1h3c2%203%200%204-3%203l-3%201%202%201c4%200%205%202%205%207%200%204-2%205-2%200l-1-4c-1-2-1-2-1%201%201%203%201%204-1%204l-1%201c1%201-4%206-6%205v2h-2c0-2%200-2-2%200l-3%201v1l-1%201c-1-1-12%206-15%209l-3%202-3%201-2%201-1%202h-4l-2-1v-3l1-1v-1l1-1h-1v-5l-3%203-3%205-1%201v2l-1%201h-1l1%202%201%202c1%201%201%200%201-2%200-3%200-3%201-2l3%202%202%201c3%204%2021%2012%2028%2011%203%200%204%200%207%204%202%205%205%207%208%206l1%201h-1l-1%201h-3c-2-1-9%201-9%203l-1%201-2%202-2%201c-1-1-7%204-10%207l-3%202%201-3%202-2%201-2c1-1%202-3%200-3h-2c0-2-3%201-3%203l-1%203-4%201-3%205-1%202-2%204c-1%204%202%205%208%201%205-4%2011-6%2012-5l3-1c7-6%2016-8%2021-5%203%203%203%202%204-5a149%20149%200%20015-22v-6a424%20424%200%2000-2-60l-1%204c0%202%200%202-1%200l1-4%201-3c0-1%200-2-1-1l-1-3v-1h-1c1-3-3-15-4-14v-1c0-2%200-2-1-1s-1%201-2-1c-1-3-1-4%201-2l1%201-2-4c-2-2-3-6-3-7l-2-2c-1-1-2-2-1-4v-1c-1%201-4-2-6-6s-4-5-3-1v3l-2-3-1-3-1-1h-2l-1-1v-1l-1-1-2-1c-2-3%201-2%205%201l4%203v-1l-2-2-1-3-1-2-8-10-8-10-1-1c-1%200-2%200-1-1l-1-1-3-1c0-2-4-5-5-4v-1l-1-1c-1%201-1%201%200%200%200-2%200-2-2-1l-2-1c2-1-10-8-13-8h-3l-1-2c-2%200-2%200-1%201%202%201%202%201-2%201h-1c0-1-6-6-8-6v-1l-2-1-3-1h-2l-2-1h-1l-3-1c-3-3-11-3-10-1%200%202%200%202-2%201l-1%201%203%201c2-1%202%200%202%201v3l1%201%201%201h-1c-2-1-3%200-2%203%200%202-4%201-5%200l-3-2-1-1%202-1h1l-7-1c-2%200-2%200-1-1l-1-1h-6l-1-1%202-1h-1l-3-1c-1-2-1-2%201-3l2-1h-4l-1%201-1-1-2-1h-5c0%201%201%202%202%201l4%201c1%201%200%201-4%201s-6%200-5-1c2%200%202-1%200-2-1-1-1-1-1%201h-1l-11-1-16%201v1h2c4%200%204%200%205%202l2%202v-1c-1-1-1-1%201-1l2-1v-1l1%202v1l1-1%203-1c2%200%202%200%201%201s-1%201%201%201v1c-5%200-12%201-13%203h-3l-2%202v1c1%201%201%201-1%201-4%200-8%201-7%202h-14c1%200%201%201-1%201-1%202-2%202-3%200l-3-1v3l1%201v1h-15l-2%201%203%202%201%201c-2%200-6%203-5%204s0%201-1%201c-4-1-4-2-1-3l3-2h-3l-6%201-3%201c-1-1%205-4%208-4%202%200%203%200%202-1-2-1%204-4%207-3v-1c-1-1%205-3%207-3l4-1%205-2h10c3%202%209%200%2010-2l-1-2v-1l-2-1-10%201-8%201-1%201-2%201-11%204h-4l-3%203h-1c-2-1-2-2%200-3%202-2-1-1-4%200-1%202-3%202-8%203l1%201c1%201%202%201%201%202l2%201h2l-3%201h-1l-3%201c-2-1-2-1-2%201%201%201%200%202-1%202-2%200-8%204-8%206s-13%209-14%208l-1%201v1L82%2064l-2%203%203%201c2%202%203%203%202%201h1l1-1v-1h1l-1-2c-3%200-2-2%200-2%204%200%205-1%207-3l2-2h2c2-2%201%200-1%203l-3%201-1%201c1%201-3%207-5%206l-1%204h-2v2h-3c1-1%201-1%200%200l-1-1-1-2h-2v1c-3%201-4%202-4%204%201%200%201%201%200%200l-1%203h-1v1l-1%201h-1l1%201v3c-1%201-1%201%201%201h1c-1%201-1%201%201%201h1l-1%202-2%201c-1%200-2%200-1-1v-1l-2-1-1-2%201-2-2%202c-4%205-5%206-4%207h-1v1h-1l-2%202c-2%205-3%205-3%202s8-13%2010-12l-1-2c-2-1-2-2-1-2%201-1%201%200%201%201l1-1%201-3%201-1h1c-1-1%202-5%209-12%208-10%209-12%208-12S72%2068%2073%2069c0%201-2%202-3%201-2-3%200-5%206-12%208-8%209-9%2010-6%201%202%202%202%206-3%203-3%205-5%204-6l3-4%203-2h1l1-1%201-1%203-1%202-2c2%201%201-2-1-4-1-2-2-3-3-2l1-2c2-2%202-2%204-1h3c0-1%202-3%205-4%204-2%204-2%206-1l3%202v-1c-3-2-3-4%201-7%203-2%203-2%204-1h2c0-1%202-3%204-3l4-3%203-1%205-2%202-2h-10a159%20159%200%2000-15%201l-4-1c-3%200-4%201-3%202m181%205l29%201h27v12l1%2011%201-13V6h-29l-29%201M170%2034l-10%203-4%201-1%201-2%201-6%203-9%204c-4%202-6%204-4%204v1c-1%201-2%202-1%203a302%20302%200%200148-22l3-1h-4l-10%202m131%2012c-1%202%202%204%204%203l5%201%201%202-3-1-1-1%203%204%203%202c-1-3%200-2%203%200%203%203%203%205%200%202l-3-1%201%202%201%202h-2c-2-2-2-2-2%200l3%203%201%202%201%201%201%201%201%201h2v-1h3l-4-3h-1v-1l1-2c-1-1%200-2%201-3s1-3-1-3l-3-2-1-1v-2c-1%201-3%200-4-2-3-2-3-2-5-1h-1l-2-2h-2m0%2058v3l-2-1c-2-2-2-2-3-1h-1l-1%201v3l-1-1h-2c0-1-5-1-8%201l-2-1c1-1%200-1-2-1l-4%202c-1%202-2%201-3%200h-3l-5%202c-4%202-6%203-6%201l-3%201-4%203-2%202h-2c-1%200-7%205-6%206l-1%201-2%202h-2l-2%201v2l-1%201-1%201-1%201v1h9l1-1v-3h3l1%201c2%200%2010-6%2011-7%202-3%2010-5%2013-3l1-1h2c1%200-9%207-11%207v1h-4c1%201%200%202-1%202l-2%203-2%201h-1l-7%204h-13l-1-1-1%201-1%201-1%201%202%201%205%201c2%202%203%202%204%200%205-3%208-2%206%201%200%202-3%203-12%204l-11%201-5-1h-1l1%202c1-1%201%200%200%200%200%202%200%202%204%201l13-2c9%200%2010%200%208%201-2%203-1%202%204-1%2010-4%2012-5%2013-3%202%201%202%201%203-1v-1l-1-1c0-2%207-2%2011-1%204%202%204%202%202%202h-4l-3%201h-1l-1-1-2%202%201%201h2c3-1%206%202%205%204l-2%201h-2c-1%201%200%201%203%201l5-1c2-1%205%200%204%202h8c1%201%201%201%201-1l1-1h5l2-1%201-2%202-4%203-4v-1l1-3%201-2v-1l1-2%202-2%202-2v-1c-1-1-1-1%201-2l3%201c1%202%205%206%2010%209l6%204v-5c0-5-2-10-4-12-1-1-3-3-3-6l-2-3v-1l-1-2c0%201-2%200-3-2-3-2-3-2-3%200%201%202%200%204-1%202-2-2-3-1-3%202s0%203-1%202-1-1-1%201l-1%202-1-4-1-8c-2-2-2-2-2%200m-136%2024l-1%203-1%201-1%202%202%201v2l-2-1h-2l4%203%201%204v4l1-2%201%202%201%204v-10l1-1c2%202%201-1-1-3-1-2-1-2%201-3%203%200%203-3%200-6-2-2-2-2-4%200m-80%202h-2v-1l-1%202c0%202-1%202-2%202-3-1-5%202-2%203%201%202%201%202-2%205l-2%204-1-3c-1-2-1-2-2%203-1%206%200%208%202%203l2-2%202-2c1-3%205-7%205-6l-1%203-1%201%207-3c1-2%202-2%203-2l1-1c0-2%200-2-3%200-6%202-6%201-4-2l5-5c3-1%203-1%201-1l-5%202m275%2019c0%2015%200%2017-2%2020l-1%204h1l-1%202-1-1-1-1v3h-1l-2%201-1%202-1%201c-1%201-2%2012-1%2014l2-5v-4l1%204v6h2l1-1%201-2c0-6%201-9%202-11%201-1%201-1%201%201l1%202%201-2v-6c-2-1-2-2-1-2%201-1%202-31%200-37v12m-11%2077c-1%200-2%201-1%202%200%202%200%202-1%201s-1-1-1%201c1%203-1%206-4%206l-1%201-1%203-1%202h-1v2c1%202%203%202%204%202l3%201h3l9%202%204%203v-13l-1-12c-1-1-9-2-11-1m-51%2023v3h1l-1%202-1-1-1-1h-7l-3%201%203%201%204%202c1%201%203%202%203%200h2c2%201%202%201%201%202-2%201-1%201%205%201l3%201h-3c-3%200-3%200-2%201%202%202%206%202%206%200h1c0%201%206%200%208-2l-2-3c-2%200-3%200-2-1v-1c-2-1-2%200-2%201%200%202%200%202-1%201h-2c-2%202-3%201-3-2%201-3%201-3-2-3h-1v-2h-2c-1%201-1%201%200%200%200-2-2-3-2%200M93%20314l-1%208v8h3c6%200%209-4%206-9l-4-2c-2%200-3%200-3-3l-1-2m-69%209v7h4c5%200%209-4%206-6v-4c0-3-2-5-7-5h-3v8'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/f1d142cb392fdfeebcdc10bf2244c830/6050d/basic-cover.png"}}},{"id":"485c5b89-8355-52ff-8585-b79c358296b9","slug":"/scaling-sql-databases","secret":false,"title":"Scaling SQL Databases.","author":"Luke Celitan","date":"October 12th, 2025","dateForSEO":"2025-10-12T00:00:00.000Z","timeToRead":5,"excerpt":"A comprehensive, hands-on guide to scaling SQL databases for modern applications. Dive deep into distributed challenges, sharding strategies, query optimization, real-world case studies, and actionable best practices—all illustrated with TypeScript code.","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\": \"Scaling SQL Databases.\",\n  \"excerpt\": \"A comprehensive, hands-on guide to scaling SQL databases for modern applications. Dive deep into distributed challenges, sharding strategies, query optimization, real-world case studies, and actionable best practices—all illustrated with TypeScript code.\",\n  \"date\": \"2025-10-12T00:00:00.000Z\",\n  \"hero\": \"sql-scaling-cover.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"TS\", \"Nodejs\"]\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\": \"introduction\"\n  }, \"Introduction\"), mdx(\"p\", null, \"Scaling SQL databases is one of the most critical\\u2014and challenging\\u2014tasks for\\nmodern software engineers, architects, and DBAs. As applications grow, so do the\\ndemands on your database: more users, more data, more transactions, and higher\\nexpectations for reliability and performance. But scaling isn\\u2019t just about\\nadding more hardware; it\\u2019s about rethinking architecture, data distribution, and\\noperational strategies.\"), mdx(\"p\", null, \"In this deep-dive, I\\u2019ll walk you through the core challenges of scaling SQL\\ndatabases, from distributed transactions to sharding strategies, and show you\\nhow to tackle each with practical TypeScript code examples. We\\u2019ll explore\\nreal-world scenarios, best practices, and advanced concepts, culminating in a\\ncase study from Arcesium\\u2019s journey scaling SQL Server in a Kubernetes-powered\\nSaaS platform.\"), mdx(\"p\", null, \"Ready to master SQL scaling? Let\\u2019s dive in!\"), mdx(\"h2\", {\n    \"id\": \"challenges-of-scaling-sql-databases\"\n  }, \"Challenges of Scaling SQL Databases\"), mdx(\"h3\", {\n    \"id\": \"acid-properties-and-distributed-complexity\"\n  }, \"ACID Properties and Distributed Complexity\"), mdx(\"p\", null, \"SQL databases are renowned for their ACID guarantees\\u2014Atomicity, Consistency,\\nIsolation, Durability. But as soon as you move from a single-node to a\\ndistributed, horizontally scaled environment, maintaining these properties\\nbecomes a formidable challenge.\"), mdx(\"h4\", {\n    \"id\": \"acid-in-single-node-vs-distributed-sql\"\n  }, \"ACID in Single-Node vs. Distributed SQL\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Atomicity\"), \": All-or-nothing transactions are easy on one server. In\\ndistributed systems, you need coordination across nodes.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Consistency\"), \": Constraints and triggers must be enforced everywhere, not\\njust locally.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Isolation\"), \": Transactions must not interfere, even when spread across\\nshards.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Durability\"), \": Committed data must survive failures, even if a node goes down\\nmid-transaction.\")), mdx(\"h4\", {\n    \"id\": \"two-phase-commit-protocol\"\n  }, \"Two-Phase Commit Protocol\"), mdx(\"p\", null, \"The classic solution for distributed transactions is the two-phase commit (2PC):\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Prepare\"), \": All involved nodes agree they can commit.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Commit\"), \": If all nodes agree, the transaction is committed everywhere;\\notherwise, it\\u2019s rolled back.\")), mdx(\"h5\", {\n    \"id\": \"typescript-example-distributed-money-transfer\"\n  }, \"TypeScript Example: Distributed Money Transfer\"), mdx(\"p\", null, \"Suppose you\\u2019re transferring money between accounts on different shards. Here\\u2019s a\\nsimplified TypeScript pseudo-code for a distributed transaction manager:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// DistributedTransactionManager.ts\\nclass DistributedTransactionManager {\\n  async transferMoney(\\n    fromShard: Shard,\\n    toShard: Shard,\\n    fromAccountId: string,\\n    toAccountId: string,\\n    amount: number,\\n  ): Promise<boolean> {\\n    // Phase 1: Prepare\\n    const prepareFrom = await fromShard.prepareDebit(fromAccountId, amount);\\n    const prepareTo = await toShard.prepareCredit(toAccountId, amount);\\n    if (!prepareFrom || !prepareTo) {\\n      await fromShard.rollback();\\n      await toShard.rollback();\\n      return false;\\n    }\\n    // Phase 2: Commit\\n    await fromShard.commit();\\n    await toShard.commit();\\n    return true;\\n  }\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Performance Consideration:\"), \" 2PC adds latency and can become a bottleneck\\nunder high load. Many distributed SQL systems (like Google Spanner) use more\\nadvanced consensus protocols (Paxos/Raft) for better scalability.\"), mdx(\"h3\", {\n    \"id\": \"complexity-of-distributed-joins\"\n  }, \"Complexity of Distributed Joins\"), mdx(\"p\", null, \"Joins are the bread and butter of SQL, but in a distributed environment, they\\ncan be a performance nightmare. Why? Because the data you need to join may live\\non different shards, requiring network hops and data transfer.\"), mdx(\"h4\", {\n    \"id\": \"example-customer-order-join-across-shards\"\n  }, \"Example: Customer-Order Join Across Shards\"), mdx(\"p\", null, \"Suppose you want to join \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Customers\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Orders\"), \", sharded by \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"CustomerID\"), \" and\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"OrderID\"), \" respectively. Here\\u2019s how you might orchestrate a distributed join in\\nTypeScript:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// DistributedJoin.ts\\nasync function distributedJoin(\\n  customersShard: Shard,\\n  ordersShard: Shard,\\n  customerId: string,\\n) {\\n  const customer = await customersShard.getCustomer(customerId);\\n  const orders = await ordersShard.getOrdersByCustomerId(customerId);\\n  return { ...customer, orders };\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Pitfall:\"), \" Distributed joins can be slow and expensive. Avoid them by\\ndesigning your schema and sharding strategy to minimize cross-shard queries.\"), mdx(\"h3\", {\n    \"id\": \"transaction-management-across-shards\"\n  }, \"Transaction Management Across Shards\"), mdx(\"p\", null, \"Coordinating transactions that span multiple shards is tricky. You need to\\nensure atomicity and consistency, even if one shard fails mid-operation.\"), mdx(\"h4\", {\n    \"id\": \"example-order-creation-and-inventory-update\"\n  }, \"Example: Order Creation and Inventory Update\"), mdx(\"p\", null, \"Let\\u2019s say you\\u2019re creating an order and updating inventory, each on a different\\nshard. Here\\u2019s a distributed transaction manager in TypeScript:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// DistributedOrderManager.ts\\nclass DistributedOrderManager {\\n  async createOrderAndUpdateInventory(\\n    orderShard: Shard,\\n    inventoryShard: Shard,\\n    order: Order,\\n    productId: string,\\n    quantity: number,\\n  ): Promise<boolean> {\\n    const orderPrepared = await orderShard.prepareCreateOrder(order);\\n    const inventoryPrepared = await inventoryShard.prepareUpdateInventory(\\n      productId,\\n      -quantity,\\n    );\\n    if (!orderPrepared || !inventoryPrepared) {\\n      await orderShard.rollback();\\n      await inventoryShard.rollback();\\n      return false;\\n    }\\n    await orderShard.commit();\\n    await inventoryShard.commit();\\n    return true;\\n  }\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Best Practice:\"), \" Use idempotent operations and compensating transactions to\\nhandle failures gracefully.\"), mdx(\"h3\", {\n    \"id\": \"data-distribution-sharding-strategies\"\n  }, \"Data Distribution: Sharding Strategies\"), mdx(\"p\", null, \"Sharding is the art of splitting your data across multiple nodes. But how you\\nshard matters\\u2014a poor choice can lead to hotspots and uneven load.\"), mdx(\"h4\", {\n    \"id\": \"sharding-key-selection\"\n  }, \"Sharding Key Selection\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Range-based\"), \": Good for time-series, but can create hotspots.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Hash-based\"), \": Distributes load evenly, but can make range queries harder.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Composite\"), \": Combines multiple fields for more balanced distribution.\")), mdx(\"h4\", {\n    \"id\": \"example-sharding-userlogs-table\"\n  }, \"Example: Sharding UserLogs Table\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ShardingLogic.ts\\nfunction getShardForUserLog(userId: string, numShards: number): number {\\n  // Simple hash-based sharding\\n  const hash = [...userId].reduce((acc, char) => acc + char.charCodeAt(0), 0);\\n  return hash % numShards;\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Pitfall:\"), \" Data skew can occur if your sharding key isn\\u2019t well chosen. Always\\nanalyze your data distribution before finalizing your strategy.\"), mdx(\"h3\", {\n    \"id\": \"ensuring-consistency-across-nodes\"\n  }, \"Ensuring Consistency Across Nodes\"), mdx(\"p\", null, \"Replication is key to scaling reads, but it introduces the challenge of keeping\\ndata consistent across nodes. Do you want strong consistency (all nodes always\\nin sync) or eventual consistency (nodes catch up over time)?\"), mdx(\"h4\", {\n    \"id\": \"example-profile-update-propagation\"\n  }, \"Example: Profile Update Propagation\"), mdx(\"p\", null, \"Suppose you want to propagate a user profile update to all replicas. Here\\u2019s an\\nevent-driven sync in TypeScript:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ProfileSync.ts\\nclass ProfileSync {\\n  async propagateUpdate(userId: string, newProfile: Profile) {\\n    for (const replica of replicas) {\\n      await replica.updateProfile(userId, newProfile);\\n    }\\n  }\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Performance Consideration:\"), \" Replication lag can cause stale reads. Monitor\\nlag and design your query routing to account for it.\"), mdx(\"hr\", null), mdx(\"h3\", {\n    \"id\": \"handling-schema-changes-in-distributed-environments\"\n  }, \"Handling Schema Changes in Distributed Environments\"), mdx(\"p\", null, \"Schema migrations are easy on a single node, but in a distributed system, you\\nneed to coordinate changes across all shards\\u2014without downtime.\"), mdx(\"h4\", {\n    \"id\": \"example-adding-a-column-to-sharded-tables\"\n  }, \"Example: Adding a Column to Sharded Tables\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// MigrationScript.ts\\nasync function addColumnToAllShards(\\n  shards: Shard[],\\n  columnName: string,\\n  columnType: string,\\n) {\\n  for (const shard of shards) {\\n    await shard.addColumn(columnName, columnType);\\n  }\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Best Practice:\"), \" Use feature toggles and schema versioning to roll out changes\\nsafely.\"), mdx(\"h3\", {\n    \"id\": \"maintaining-foreign-keys-and-constraints\"\n  }, \"Maintaining Foreign Keys and Constraints\"), mdx(\"p\", null, \"Referential integrity is a cornerstone of SQL, but enforcing foreign keys across\\nshards is tough. You may need to move checks to the application layer or\\ndenormalize data.\"), mdx(\"h4\", {\n    \"id\": \"example-author-book-relationship-enforcement\"\n  }, \"Example: Author-Book Relationship Enforcement\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ReferentialIntegrity.ts\\nasync function checkAuthorExistsBeforeAddingBook(\\n  authorsShard: Shard,\\n  authorId: string,\\n): Promise<boolean> {\\n  const author = await authorsShard.getAuthor(authorId);\\n  return !!author;\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Pitfall:\"), \" Application-level checks can be error-prone. Consider\\ndenormalization or cascading actions for critical relationships.\"), mdx(\"h3\", {\n    \"id\": \"query-optimization-in-distributed-systems\"\n  }, \"Query Optimization in Distributed Systems\"), mdx(\"p\", null, \"Optimizing queries in a distributed SQL system means being shard-aware, using\\nindexes wisely, and caching aggressively.\"), mdx(\"h4\", {\n    \"id\": \"example-optimized-sales-query\"\n  }, \"Example: Optimized Sales Query\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// QueryRouter.ts\\nasync function getSalesByRegion(region: string, shards: Shard[]) {\\n  const regionShard = shards.find((shard) => shard.region === region);\\n  return regionShard ? await regionShard.getSales(region) : [];\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Best Practice:\"), \" Route queries to the right shard, avoid cross-shard queries,\\nand use caching for frequently accessed data.\"), mdx(\"h2\", {\n    \"id\": \"how-to-scale-sql-databases\"\n  }, \"How to Scale SQL Databases\"), mdx(\"h3\", {\n    \"id\": \"vertical-scaling-when-and-why\"\n  }, \"Vertical Scaling: When and Why\"), mdx(\"p\", null, \"Vertical scaling means adding more CPU, RAM, or storage to your database server.\\nIt\\u2019s simple, but has hard limits and can get expensive fast. Use it for quick\\nwins, but plan for horizontal scaling as you grow.\"), mdx(\"h3\", {\n    \"id\": \"horizontal-scaling-sharding-and-partitioning\"\n  }, \"Horizontal Scaling: Sharding and Partitioning\"), mdx(\"p\", null, \"Horizontal scaling is the gold standard for large-scale SQL. Shard your data,\\npartition your tables, and distribute the load.\"), mdx(\"h4\", {\n    \"id\": \"example-setting-up-sharded-clusters\"\n  }, \"Example: Setting Up Sharded Clusters\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ShardedClusterSetup.ts\\nclass ShardedCluster {\\n  shards: Shard[];\\n  constructor(numShards: number) {\\n    this.shards = Array.from({ length: numShards }, (_, i) => new Shard(i));\\n  }\\n  getShardForKey(key: string): Shard {\\n    const hash = [...key].reduce((acc, char) => acc + char.charCodeAt(0), 0);\\n    return this.shards[hash % this.shards.length];\\n  }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"read-replicas-and-high-availability\"\n  }, \"Read Replicas and High Availability\"), mdx(\"p\", null, \"Read replicas let you scale reads, but beware replication lag and consistency\\ntrade-offs. Use a query redirection framework to route reads to the best\\nreplica.\"), mdx(\"h4\", {\n    \"id\": \"example-query-redirection-framework\"\n  }, \"Example: Query Redirection Framework\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ReplicaSelector.ts\\nclass ReplicaSelector {\\n  async selectReplica(query: Query, replicas: Replica[]): Promise<Replica> {\\n    // Choose the replica with the lowest replication lag for the relevant data\\n    const candidates = replicas.filter((replica) =>\\n      replica.hasFreshDataFor(query),\\n    );\\n    return candidates.sort((a, b) => a.replicationLag - b.replicationLag)[0];\\n  }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"caching-and-query-throttling\"\n  }, \"Caching and Query Throttling\"), mdx(\"p\", null, \"Caching is your best friend for scaling reads. Use Redis or similar to cache hot\\ndata and throttle expensive queries.\"), mdx(\"h4\", {\n    \"id\": \"example-redis-cache-integration\"\n  }, \"Example: Redis Cache Integration\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// CacheLayer.ts\\nimport Redis from 'ioredis';\\nconst redis = new Redis();\\n\\nasync function getCachedOrQuery(key: string, queryFn: () => Promise<any>) {\\n  const cached = await redis.get(key);\\n  if (cached) return JSON.parse(cached);\\n  const result = await queryFn();\\n  await redis.set(key, JSON.stringify(result), 'EX', 60); // Cache for 60s\\n  return result;\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"data-archival-and-purging\"\n  }, \"Data Archival and Purging\"), mdx(\"p\", null, \"Archiving old data keeps your hot tables lean and fast. Schedule regular\\narchival jobs to move historical data to cold storage.\"), mdx(\"h4\", {\n    \"id\": \"example-scheduled-archival-job\"\n  }, \"Example: Scheduled Archival Job\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ArchivalJob.ts\\nasync function archiveOldRecords(shard: Shard, cutoffDate: Date) {\\n  const oldRecords = await shard.getRecordsBefore(cutoffDate);\\n  await shard.moveToArchive(oldRecords);\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"monitoring-and-observability\"\n  }, \"Monitoring and Observability\"), mdx(\"p\", null, \"Track metrics like replication lag, query latency, and CPU utilization. Build\\ncustom metrics collectors in TypeScript for real-time insights.\"), mdx(\"h4\", {\n    \"id\": \"example-metrics-collection\"\n  }, \"Example: Metrics Collection\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// MetricsCollector.ts\\nclass MetricsCollector {\\n  async collectReplicationLag(replica: Replica): Promise<number> {\\n    return await replica.getReplicationLag();\\n  }\\n  async collectQueryLatency(query: Query): Promise<number> {\\n    const start = Date.now();\\n    await query.execute();\\n    return Date.now() - start;\\n  }\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"best-practices\"\n  }, \"Best Practices\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Model and test upfront\"), \": Simulate your sharding and scaling strategy before\\ngoing live.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Choose the right sharding key\"), \": Analyze your data and query patterns.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Avoid cross-shard joins\"), \": Design your schema to minimize distributed\\nqueries.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Handle schema changes with feature toggles/versioning\"), \": Roll out changes\\nsafely.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Ensure referential integrity\"), \": Use denormalization or application-level\\nchecks.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Implement load shedding and failover\"), \": Prepare for overloads and outages.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Monitor continuously\"), \": Track key metrics and set up alerts.\")), mdx(\"h2\", {\n    \"id\": \"common-pitfalls\"\n  }, \"Common Pitfalls\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Hotspots from poor sharding\"), \": Leads to uneven load and bottlenecks.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Ignoring replication lag\"), \": Causes stale reads and data inconsistency.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Overcomplicating schema migrations\"), \": Increases risk of downtime.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Underestimating network overhead\"), \": Distributed systems are not free!\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Failing to plan for disaster recovery\"), \": Always have a rollback and failover\\nplan.\")), mdx(\"h2\", {\n    \"id\": \"real-world-case-study-arcesiums-scaling-journey\"\n  }, \"Real-World Case Study: Arcesium\\u2019s Scaling Journey\"), mdx(\"p\", null, \"Arcesium, a fintech SaaS platform, faced the classic scaling challenge: surging\\nAPI traffic and a maxed-out SQL Server. Here\\u2019s how they tackled it:\"), mdx(\"h3\", {\n    \"id\": \"query-redirection-framework\"\n  }, \"Query Redirection Framework\"), mdx(\"p\", null, \"They built a TypeScript-powered framework to route queries to read replicas,\\nbased on replication lag and query determinants.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// QueryRedirection.ts\\nclass QueryRedirectionFramework {\\n  async routeQuery(query: Query, replicas: Replica[], primary: Replica) {\\n    const lagThreshold = 5; // seconds\\n    const candidates = replicas.filter(\\n      (replica) => replica.getReplicationLag() < lagThreshold,\\n    );\\n    if (candidates.length > 0) {\\n      return await candidates[0].executeQuery(query);\\n    }\\n    return await primary.executeQuery(query);\\n  }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"replication-monitoring\"\n  }, \"Replication Monitoring\"), mdx(\"p\", null, \"A poller tracks Last Sync Time (LST) for each database, publishing metrics for\\nobservability.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// ReplicationMonitor.ts\\nclass ReplicationMonitor {\\n  async pollReplicationLag(replicas: Replica[]) {\\n    for (const replica of replicas) {\\n      const lag = await replica.getReplicationLag();\\n      console.log(`Replica ${replica.id} lag: ${lag}s`);\\n    }\\n  }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"load-shedding\"\n  }, \"Load Shedding\"), mdx(\"p\", null, \"During replica downtime or high lag, non-priority calls are shed to protect the\\nprimary.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"// LoadShedding.ts\\nclass LoadShedding {\\n  async handleOverload(request: Request, isPriority: boolean) {\\n    if (!isPriority) {\\n      throw new Error('Service unavailable due to load shedding');\\n    }\\n    // Proceed with request\\n  }\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Outcome:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"91.5% reduction in CPU usage above 95% threshold.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"7\\u201312% of workload offloaded to replicas during peak hours.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Improved stability and SLO compliance.\")), mdx(\"h2\", {\n    \"id\": \"advanced-concepts\"\n  }, \"Advanced Concepts\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Distributed consensus (Paxos, Raft):\"), \" Used for leader election and\\ntransaction coordination in modern distributed SQL systems.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Multi-region replication:\"), \" Ensures global availability and disaster\\nrecovery.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Hybrid SQL/NoSQL architectures:\"), \" Combine strengths for scalability and\\nflexibility.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Cloud-native SQL scaling:\"), \" Managed services (e.g., Google Spanner, Amazon\\nAurora) offer built-in scaling and resilience.\")), mdx(\"h2\", {\n    \"id\": \"troubleshooting-and-recovery\"\n  }, \"Troubleshooting and Recovery\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Rollback strategies:\"), \" Use compensating transactions and idempotent\\noperations.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Incident response:\"), \" Automate failover and alerting.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Post-mortem analysis:\"), \" Document root cause, impact, recovery steps, and\\nlessons learned.\")), mdx(\"h4\", {\n    \"id\": \"example-post-mortem-template\"\n  }, \"Example: Post-Mortem Template\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-markdown\"\n  }, \"# Incident Post-Mortem\\n\\n## Summary\\n\\n## Timeline\\n\\n## Impact\\n\\n## Root Cause\\n\\n## Recovery Steps\\n\\n## Lessons Learned\\n\\n## Action Items\\n\")), mdx(\"h2\", {\n    \"id\": \"conclusion-and-further-reading\"\n  }, \"Conclusion and Further Reading\"), mdx(\"p\", null, \"Scaling SQL databases is a journey, not a destination. It demands deep technical\\nunderstanding, careful planning, and relentless monitoring. By mastering\\ndistributed transactions, sharding, query optimization, and real-world\\nstrategies, you\\u2019ll be ready to build resilient, high-performance systems that\\nscale with your business.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Further Reading:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://research.google/pubs/pub39966/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Google Spanner Whitepaper\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://aws.amazon.com/rds/aurora/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Amazon Aurora Architecture\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://book.mixu.net/distsys/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Distributed Systems for Fun and Profit\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://medium.com/arcesium-engineering\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Arcesium Engineering Blog\"))), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Ready to scale your SQL database? Have questions or want to share your\\nexperience? Drop a comment below or reach out!\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["TS","Nodejs"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEJElEQVQ4y11U30+TVxj+WmgZmQkMSCiElvKjUgrSlrZCbUtbW2g/2tIuDKRCtSirgIIVkFhIlE3Z7jRcuJvZCiZLGMaLLZu7445lcdnNlpmZTKcdqMv+gnnz7JwXPja8eHPe8+s57/s8z/cJFRUVEASBQqFQ0CiXy1FYWEjj/3OZTAYZGwsKCqBUKg7s8zW+L1itVmg0GpqoVCp0d3dTKJVKAueHpUeky0VFRXugSipCAqQ7bncXurq6EIlE4Ha7MTE+juydLBYXF1FVVb0PKl2UquUAUme0rtjdE+rq6mA2meBmoPqmJmi1WlgsFly7eg2jo2fwNiUEtle1Wq2mIqhVQbZ7jl9oaGhAKpWC1+ulvN1sxuDAAKtyAfPz88hkMlBVVdEFDibRkUgksLW1RY/wOQGXlZURCAHX16O2tpbmnZ2d8Pv9EEURd3M5rK6uEncSn/xycXExysvLaa7YE0ngbXAQu92OZDKJUCiEegbMD9bWajA2Nob19XVks1nYbLb9SnbbFA48QLzyV41tbejo6CA+fD4f+vv7wdVXqSqp6kzmCt7884ZaJy5ZNRKoJBQHI1F4Jbzd6upq1NTU4LBOh3Opc3C5nHivtBSHDr2LWDSKzc1NTE5OHhDnbZ9Sy06HA4bmZpiY0rrGRsxcmsHKygpaW1tRWVkJHXuglAEbDAbiVgLkFUm8yeSyfVsJXFHelkajRpRVsrS0RGJwS3g9Hmafq8Sdgz3MaeDg8gI5fSkSMPcgz0m092MxlJSUUKucu+XlZXgYl7ziPmZ2bpt0Ok2qc1sFAwHijpRV/Mcln7e0tEBo1uupDaPRiGAwiFzuLm7evIU2JhT/grjxebXcCWJQJNOTH/dEkID5Wj07K1jZgeLid2Bj7fD2P/1kGd89fAiX00FtSdbgh6cunIde30TzoqJdc7e3m9ErBkk8LbOZ4AicwGGLD612EeauKJxiHOJgCkZHGGrDMWiPuKBpcaLR7IUzGIcvlkSjyYMGFjq25gmPwB0ahtkVgaEjAMEV/RB9p2YRTszQ6B84jwjLe4fTCI3M4IOxDKLJy+g/ewXB+DQCQ1M4Ko7CGjgNWyAJk2+Yor07AUvPaQjHQqMIDV+kCI+kaew9OU3h6x9n4Gn0xqdoDPM9lpuOD+GIexBtnhMweocoeM5DsPhPss2B/UUjC/PxOCz+YVZBAtaeBI4GTlFuY7mN5Y7wGTgjZ+HqG6NRmvMQPr+Tw717X2Dj/gN89fU3LL7F9z88wqMff8LPvzzG8/w28tsvsb3zGq9e/42dV3/h2fM88n++xNM/8nj67AVe5Hfw25Pf8evjJxDs9k709HSTUrFYFPH4EC4wNS8x783NzuLy3BwmJybY55jCxelpLC4s4PrHH+HGjev47PZtbGx8iTX2J1pbW6W/0r8VypkVN0M4tgAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/f266a13c694ae28321109bc05a8911f3/a1946/sql-scaling-cover.png","srcSet":"/static/f266a13c694ae28321109bc05a8911f3/5b37e/sql-scaling-cover.png 236w,\n/static/f266a13c694ae28321109bc05a8911f3/49058/sql-scaling-cover.png 472w,\n/static/f266a13c694ae28321109bc05a8911f3/a1946/sql-scaling-cover.png 944w,\n/static/f266a13c694ae28321109bc05a8911f3/6050d/sql-scaling-cover.png 1200w","srcWebp":"/static/f266a13c694ae28321109bc05a8911f3/99fbb/sql-scaling-cover.webp","srcSetWebp":"/static/f266a13c694ae28321109bc05a8911f3/77392/sql-scaling-cover.webp 236w,\n/static/f266a13c694ae28321109bc05a8911f3/1f177/sql-scaling-cover.webp 472w,\n/static/f266a13c694ae28321109bc05a8911f3/99fbb/sql-scaling-cover.webp 944w,\n/static/f266a13c694ae28321109bc05a8911f3/9000d/sql-scaling-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%205v6l10%206%209%208-9-5-9-6c-1-1-1%209-1%2045a253%20253%200%20001%2048l-1%2041a457%20457%200%20001%2049l-1%2016c0%2014%200%2015%202%2013v3c-1%202-1%202%201%201%202%200%202%200%201%202v1c2-1%205%201%204%202H2l3%201c4%202%205%202%205%201v-1c2%200%203%202%201%204-1%201-2%200-5-1-5-3-6-2-6%208l1%208h1l-1%201-1%2053v53h13c18%201%20100%200%20141-1l141-1%20106%201V0H111v3c0%202%200%202-1%201V1L55%200H0v5m89%2029l-6%202c-1%202-1%202%203%201%205-3%206-1%201%203l-3%203%202%201c6%203%208%204%207%207%200%202%200%202%201%201%202-2%202-2%203%200l5%206h1c3%202%203-5%202-13-2-6-2-10%200-5l1%202%201%201v2c2%204%203%2010%202%2011-2%201%202%203%204%202%202%200%202-1%202-7-1-8%201-7%202%200%201%204%201%205%205%205%203%201%204%201%201%201-2%201-2%203-1%203l2%201v1l2-1%203%204c3%204%204%205%205%203s3-3%203%200v3l-2%202c-2%202-2%204%200%203l3%201c3%201%207%201%2010-1%202-3%206-2%2024%204%201%200%201%201-1%203-2%203-1%204%202%203l2%201v2c3%200%202%202%200%202-1%201-2%200-2-1s-1-2-7-3l-5-1c-1-1-13-6-16-6l2%201c2%201%202%202%201%202l-6-2c-5-3-11-3-13-1-3%202-2%203%204%204l5%201h-8l2%201c3%202%203%202%201%202-1%201%200%201%202%201%203%200%204%200%203-2%200-2%201-3%202-3%202%200%202%200%202%202-1%201-1%201%202%201h4l1%204-1-1h-1l-3%201c-2%200-2%200-1-1s1-1-1-2c-1-1-2-1-2%201-1%201-1%202-2%201l-9%202%209%201c11%201%2021%203%2019%204l-1%203c0%201%201%201%202-1l1-3c-1-1%200-1%201-2%203-1%203-1%202%201l1%201c1-1%208%202%208%205l3%201%204%201%207%203c11%205%2019%2010%2018%2011v1h-1l-1%201%206%207c3%201%203%200-1-4-2-3-2-4%200-2l2%201c3%200%205%201%204%203l1%201%202%202c0%202%200%202%201%201h2l1%201c-1%202%200%202%202%201%202-2%203-6%201-8l-1-4c-1-6-1-6-2-5-1%200-2-1-2-3l-2-3-1-2v-2h-5l-2-2c-1-3-4-5-5-3h-1c0-2-6-6-9-6-2%200-5-4-3-5%202%200-11-7-22-10-5-2-10-4-9-5h-2c-1%201-15-2-16-2v-6h6l1-4c0-4-2-7-4-8l-2%201-1%201-3%203c0%202-1%201-4-2l-5-8c-3-7-20-17-18-11%200%202%201%202-7%200-8-3-9-3-14-2m-23%208l-1%202h-2v2c-1-1-3%200-4%201h-4c-4-2-5-1-5%204%201%205%200%207-4%208v4c-1%203-1%204%201%201l3-2%205-5%203-5%201-1c0-2%200-3%201-2l1%201c-1%202%202%201%206-3%206-6%205-8-1-5m-5%2031l-1%203c0%202-4%204-6%204l-3%203-6%2011-1%202v1l3-3c0-2%200-2%201-1%200%202%201%202%205%201%204-2%207-8%207-13l3-5c1-1%202-4%200-4l-2%201m257%202c-4%202-7%208-6%2015%200%204%207%2011%2011%2012%207%201%2015-5%2015-12%200-13-9-19-20-15m-141%2041c0%202%200%202-1%201-2-2-2-2-3%200%200%202-1%203-2%203l-1%202-1%202v11c1%202%201%202%202%200s1-2%201%201%205%208%206%206l1-1h1c2-1%206%200%205%201l1%202c1%201%201%200%201-2l2-1%201%201v2l1%202%201%201-1%201h-1l1%203c1%200%201%201-1%202v3c2%201%202%201%203-2l1-3v3c-1%204-1%205%204%205%204%201%2015%207%2014%208l-4-2c-3-2-15-5-16-5l-2%204-3%204%206%207%207%207%205-6%205-5%204%203c4%203%204%204%204%2011v9c-1%202%200%208%201%206%202-1%204-12%203-14l1-3%201%203%201%201%201-3c0-2%200-2%201-1l1-4%201-8c1-2%200-17-2-21s-9-12-11-12c-4%200-5%200-6-4%200-3-7-9-20-15-10-5-13-6-13-3m-85%2014c-20%205-34%2010-38%2013-7%205-6%205%2019-2l11-2%207-4%2010-5%204-2h-4l-9%202m15%207c0%201%206%208%209%209l5%204c2%203%201%203-2%200l-5-4-3-1-3-3-2-3v4l-1%201c0%202%203%206%203%204h3l2%201%206%204%203%201%201%201%202%202c1-1%200-3-1-5-2-4-3-5%200-3l2%201-4-4-4-2v-1h-1l-1-1-4-3c-4-3-5-4-5-2m18%2028c-3%207-5%2011-8%2011-3%201-5-1-5-3s-6-3-7-1v2c4%201%209%205%2010%206h-4l-3%2011-2%202v-1c0-2%200-3-5-5-6-3-6-3-10%203-7%2011-8%2014-6%2016%202%201%202%202-2%205v5c1%205%201%207-1%207l5%203%207%203c1%200%202%201%201%203%200%203%200%203-3%202l-7-3c-3-1-4-1-3-3l-1-2v2h-5l-8%201h1c16-2%2025%2013%2024%2037v8l1-1-2%204-1%202%204-4c2-3%204-4%202%200v3c-2%201-3%204-1%204l2-1%201-2h1c-2-1-1-2%201-1s3%202%202%204c0%203%203%204%2010%204h5v-12l-1-2c0-8-10-28-17-34-3-2-4-6-2-7v-5c-1-4-2-5-4-4-2%200-5-3-2-4l-2-3c-1-1-3-2-4-1-2%200-2%200%200-3%204-5%206-6%207-4s4%202%205%200h1v3l-4%207%203-2%204-3c2%200%2012-19%2010-20-2%200%201-4%203-4%201%200%205-5%205-8l3-7%203-8c-1-2-1-2-1%200m42%2036c-5%2015-5%2016%200%2019l4%202%201-3c2-3%202-3%204-2v1c-4%200-1%205%202%205l4%202c2%201%202%201%202-1v-3l1%203c0%202%201%203%202%203%202%201%202%201%202-2%200-2-1-3-7-7l-7-4v-4c1-4-1-8-5-8l-2-1h-1m35%2015c-6%209-9%2016-7%2018%205%204%205%204%209-9l3-11c1-5%200-4-5%202m48%207v2l-1%202s-2%202-2%205l-3%208-1%205%202-3c0-2%201-3%202-3v1l1%201c2-1%201%201-1%204l-3%202c-1-1-2%200-1%202v1c-2-1-3%200-4%203-3%203-3%205%200%205l1%201c0%203%203%200%206-6l4-8%205-15c0-2-3-8-5-7m-85%202c-1%201%200%202%201%203%202%201%202%201-3%201h-7l-1%202c-1%201-1%201%202%201%208-2%2012-2%2012-1l-1%201c-5%200-6%200-5%202v1l1%203c2%202%203%202%206%202l3%201%202%201-1-5-1-5%209%202h1c0-1-3-4-8-6-9-4-10-5-10-3m71%2036v2h-2l-3-1v1l6%208%201%204c0%201%200%202-3%203-4%201-7%204-4%205%202%202%2012%202%2013%201h3c4%202%208%202%208%201h5c-1-2-8-5-10-4v-1l-3-2c-4-2-5-4-3-4s1-2-3-6l-2-5%201-2h-2l-1-2-1%202m-120%2051c-4%203-4%2010-1%2012%203%203%2012%207%209%204-1-1%200-2%201-4%203-3%203-9%200-12s-6-3-9%200m84%206v9l4-1c5%200%206-1%206-6%200-4-2-6-6-6-2%201-2%201-2-1l-1-3-1%208m-51%201l1%207h4c6%200%208-2%208-7%200-6-2-8-8-8h-5v8m-68-3c-2%202-2%207-1%209l5%201c2-1%202%200%202%201l-4%201c-3%200-4%202%200%203%205%201%206-2%206-9v-7l-4-1-4%202M0%20391v9h401v-9c0-5%200-8-1-7%200%202-1%203-3%203l-3%201h3c3%200%203%200%203%203v4l-12-1-12%201-2%201c-1%200-2%200-1-1l-1-1c-19-2-32-2-33%200l-3%201-2-1h-9c-11%200-18-1-16-2%201-1-4-1-12-1l-19-1h-42a997%20997%200%2001-64%200c1%201%201%201-1%201l-3-1h-16c-13%200-14%200-10-1l5-2-3-1h-34a4526%204526%200%2000-81-2l-29-1v8'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEJElEQVQ4y11U30+TVxj+WmgZmQkMSCiElvKjUgrSlrZCbUtbW2g/2tIuDKRCtSirgIIVkFhIlE3Z7jRcuJvZCiZLGMaLLZu7445lcdnNlpmZTKcdqMv+gnnz7JwXPja8eHPe8+s57/s8z/cJFRUVEASBQqFQ0CiXy1FYWEjj/3OZTAYZGwsKCqBUKg7s8zW+L1itVmg0GpqoVCp0d3dTKJVKAueHpUeky0VFRXugSipCAqQ7bncXurq6EIlE4Ha7MTE+juydLBYXF1FVVb0PKl2UquUAUme0rtjdE+rq6mA2meBmoPqmJmi1WlgsFly7eg2jo2fwNiUEtle1Wq2mIqhVQbZ7jl9oaGhAKpWC1+ulvN1sxuDAAKtyAfPz88hkMlBVVdEFDibRkUgksLW1RY/wOQGXlZURCAHX16O2tpbmnZ2d8Pv9EEURd3M5rK6uEncSn/xycXExysvLaa7YE0ngbXAQu92OZDKJUCiEegbMD9bWajA2Nob19XVks1nYbLb9SnbbFA48QLzyV41tbejo6CA+fD4f+vv7wdVXqSqp6kzmCt7884ZaJy5ZNRKoJBQHI1F4Jbzd6upq1NTU4LBOh3Opc3C5nHivtBSHDr2LWDSKzc1NTE5OHhDnbZ9Sy06HA4bmZpiY0rrGRsxcmsHKygpaW1tRWVkJHXuglAEbDAbiVgLkFUm8yeSyfVsJXFHelkajRpRVsrS0RGJwS3g9Hmafq8Sdgz3MaeDg8gI5fSkSMPcgz0m092MxlJSUUKucu+XlZXgYl7ziPmZ2bpt0Ok2qc1sFAwHijpRV/Mcln7e0tEBo1uupDaPRiGAwiFzuLm7evIU2JhT/grjxebXcCWJQJNOTH/dEkID5Wj07K1jZgeLid2Bj7fD2P/1kGd89fAiX00FtSdbgh6cunIde30TzoqJdc7e3m9ErBkk8LbOZ4AicwGGLD612EeauKJxiHOJgCkZHGGrDMWiPuKBpcaLR7IUzGIcvlkSjyYMGFjq25gmPwB0ahtkVgaEjAMEV/RB9p2YRTszQ6B84jwjLe4fTCI3M4IOxDKLJy+g/ewXB+DQCQ1M4Ko7CGjgNWyAJk2+Yor07AUvPaQjHQqMIDV+kCI+kaew9OU3h6x9n4Gn0xqdoDPM9lpuOD+GIexBtnhMweocoeM5DsPhPss2B/UUjC/PxOCz+YVZBAtaeBI4GTlFuY7mN5Y7wGTgjZ+HqG6NRmvMQPr+Tw717X2Dj/gN89fU3LL7F9z88wqMff8LPvzzG8/w28tsvsb3zGq9e/42dV3/h2fM88n++xNM/8nj67AVe5Hfw25Pf8evjJxDs9k709HSTUrFYFPH4EC4wNS8x783NzuLy3BwmJybY55jCxelpLC4s4PrHH+HGjev47PZtbGx8iTX2J1pbW6W/0r8VypkVN0M4tgAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/f266a13c694ae28321109bc05a8911f3/3ddd4/sql-scaling-cover.png","srcSet":"/static/f266a13c694ae28321109bc05a8911f3/078a8/sql-scaling-cover.png 163w,\n/static/f266a13c694ae28321109bc05a8911f3/e56da/sql-scaling-cover.png 327w,\n/static/f266a13c694ae28321109bc05a8911f3/3ddd4/sql-scaling-cover.png 653w,\n/static/f266a13c694ae28321109bc05a8911f3/c5cc7/sql-scaling-cover.png 980w,\n/static/f266a13c694ae28321109bc05a8911f3/6050d/sql-scaling-cover.png 1200w","srcWebp":"/static/f266a13c694ae28321109bc05a8911f3/0acdf/sql-scaling-cover.webp","srcSetWebp":"/static/f266a13c694ae28321109bc05a8911f3/ac59e/sql-scaling-cover.webp 163w,\n/static/f266a13c694ae28321109bc05a8911f3/7660b/sql-scaling-cover.webp 327w,\n/static/f266a13c694ae28321109bc05a8911f3/0acdf/sql-scaling-cover.webp 653w,\n/static/f266a13c694ae28321109bc05a8911f3/75470/sql-scaling-cover.webp 980w,\n/static/f266a13c694ae28321109bc05a8911f3/9000d/sql-scaling-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%205v6l10%206%209%208-9-5-9-6c-1-1-1%209-1%2045a253%20253%200%20001%2048l-1%2041a457%20457%200%20001%2049l-1%2016c0%2014%200%2015%202%2013v3c-1%202-1%202%201%201%202%200%202%200%201%202v1c2-1%205%201%204%202H2l3%201c4%202%205%202%205%201v-1c2%200%203%202%201%204-1%201-2%200-5-1-5-3-6-2-6%208l1%208h1l-1%201-1%2053v53h13c18%201%20100%200%20141-1l141-1%20106%201V0H111v3c0%202%200%202-1%201V1L55%200H0v5m89%2029l-6%202c-1%202-1%202%203%201%205-3%206-1%201%203l-3%203%202%201c6%203%208%204%207%207%200%202%200%202%201%201%202-2%202-2%203%200l5%206h1c3%202%203-5%202-13-2-6-2-10%200-5l1%202%201%201v2c2%204%203%2010%202%2011-2%201%202%203%204%202%202%200%202-1%202-7-1-8%201-7%202%200%201%204%201%205%205%205%203%201%204%201%201%201-2%201-2%203-1%203l2%201v1l2-1%203%204c3%204%204%205%205%203s3-3%203%200v3l-2%202c-2%202-2%204%200%203l3%201c3%201%207%201%2010-1%202-3%206-2%2024%204%201%200%201%201-1%203-2%203-1%204%202%203l2%201v2c3%200%202%202%200%202-1%201-2%200-2-1s-1-2-7-3l-5-1c-1-1-13-6-16-6l2%201c2%201%202%202%201%202l-6-2c-5-3-11-3-13-1-3%202-2%203%204%204l5%201h-8l2%201c3%202%203%202%201%202-1%201%200%201%202%201%203%200%204%200%203-2%200-2%201-3%202-3%202%200%202%200%202%202-1%201-1%201%202%201h4l1%204-1-1h-1l-3%201c-2%200-2%200-1-1s1-1-1-2c-1-1-2-1-2%201-1%201-1%202-2%201l-9%202%209%201c11%201%2021%203%2019%204l-1%203c0%201%201%201%202-1l1-3c-1-1%200-1%201-2%203-1%203-1%202%201l1%201c1-1%208%202%208%205l3%201%204%201%207%203c11%205%2019%2010%2018%2011v1h-1l-1%201%206%207c3%201%203%200-1-4-2-3-2-4%200-2l2%201c3%200%205%201%204%203l1%201%202%202c0%202%200%202%201%201h2l1%201c-1%202%200%202%202%201%202-2%203-6%201-8l-1-4c-1-6-1-6-2-5-1%200-2-1-2-3l-2-3-1-2v-2h-5l-2-2c-1-3-4-5-5-3h-1c0-2-6-6-9-6-2%200-5-4-3-5%202%200-11-7-22-10-5-2-10-4-9-5h-2c-1%201-15-2-16-2v-6h6l1-4c0-4-2-7-4-8l-2%201-1%201-3%203c0%202-1%201-4-2l-5-8c-3-7-20-17-18-11%200%202%201%202-7%200-8-3-9-3-14-2m-23%208l-1%202h-2v2c-1-1-3%200-4%201h-4c-4-2-5-1-5%204%201%205%200%207-4%208v4c-1%203-1%204%201%201l3-2%205-5%203-5%201-1c0-2%200-3%201-2l1%201c-1%202%202%201%206-3%206-6%205-8-1-5m-5%2031l-1%203c0%202-4%204-6%204l-3%203-6%2011-1%202v1l3-3c0-2%200-2%201-1%200%202%201%202%205%201%204-2%207-8%207-13l3-5c1-1%202-4%200-4l-2%201m257%202c-4%202-7%208-6%2015%200%204%207%2011%2011%2012%207%201%2015-5%2015-12%200-13-9-19-20-15m-141%2041c0%202%200%202-1%201-2-2-2-2-3%200%200%202-1%203-2%203l-1%202-1%202v11c1%202%201%202%202%200s1-2%201%201%205%208%206%206l1-1h1c2-1%206%200%205%201l1%202c1%201%201%200%201-2l2-1%201%201v2l1%202%201%201-1%201h-1l1%203c1%200%201%201-1%202v3c2%201%202%201%203-2l1-3v3c-1%204-1%205%204%205%204%201%2015%207%2014%208l-4-2c-3-2-15-5-16-5l-2%204-3%204%206%207%207%207%205-6%205-5%204%203c4%203%204%204%204%2011v9c-1%202%200%208%201%206%202-1%204-12%203-14l1-3%201%203%201%201%201-3c0-2%200-2%201-1l1-4%201-8c1-2%200-17-2-21s-9-12-11-12c-4%200-5%200-6-4%200-3-7-9-20-15-10-5-13-6-13-3m-85%2014c-20%205-34%2010-38%2013-7%205-6%205%2019-2l11-2%207-4%2010-5%204-2h-4l-9%202m15%207c0%201%206%208%209%209l5%204c2%203%201%203-2%200l-5-4-3-1-3-3-2-3v4l-1%201c0%202%203%206%203%204h3l2%201%206%204%203%201%201%201%202%202c1-1%200-3-1-5-2-4-3-5%200-3l2%201-4-4-4-2v-1h-1l-1-1-4-3c-4-3-5-4-5-2m18%2028c-3%207-5%2011-8%2011-3%201-5-1-5-3s-6-3-7-1v2c4%201%209%205%2010%206h-4l-3%2011-2%202v-1c0-2%200-3-5-5-6-3-6-3-10%203-7%2011-8%2014-6%2016%202%201%202%202-2%205v5c1%205%201%207-1%207l5%203%207%203c1%200%202%201%201%203%200%203%200%203-3%202l-7-3c-3-1-4-1-3-3l-1-2v2h-5l-8%201h1c16-2%2025%2013%2024%2037v8l1-1-2%204-1%202%204-4c2-3%204-4%202%200v3c-2%201-3%204-1%204l2-1%201-2h1c-2-1-1-2%201-1s3%202%202%204c0%203%203%204%2010%204h5v-12l-1-2c0-8-10-28-17-34-3-2-4-6-2-7v-5c-1-4-2-5-4-4-2%200-5-3-2-4l-2-3c-1-1-3-2-4-1-2%200-2%200%200-3%204-5%206-6%207-4s4%202%205%200h1v3l-4%207%203-2%204-3c2%200%2012-19%2010-20-2%200%201-4%203-4%201%200%205-5%205-8l3-7%203-8c-1-2-1-2-1%200m42%2036c-5%2015-5%2016%200%2019l4%202%201-3c2-3%202-3%204-2v1c-4%200-1%205%202%205l4%202c2%201%202%201%202-1v-3l1%203c0%202%201%203%202%203%202%201%202%201%202-2%200-2-1-3-7-7l-7-4v-4c1-4-1-8-5-8l-2-1h-1m35%2015c-6%209-9%2016-7%2018%205%204%205%204%209-9l3-11c1-5%200-4-5%202m48%207v2l-1%202s-2%202-2%205l-3%208-1%205%202-3c0-2%201-3%202-3v1l1%201c2-1%201%201-1%204l-3%202c-1-1-2%200-1%202v1c-2-1-3%200-4%203-3%203-3%205%200%205l1%201c0%203%203%200%206-6l4-8%205-15c0-2-3-8-5-7m-85%202c-1%201%200%202%201%203%202%201%202%201-3%201h-7l-1%202c-1%201-1%201%202%201%208-2%2012-2%2012-1l-1%201c-5%200-6%200-5%202v1l1%203c2%202%203%202%206%202l3%201%202%201-1-5-1-5%209%202h1c0-1-3-4-8-6-9-4-10-5-10-3m71%2036v2h-2l-3-1v1l6%208%201%204c0%201%200%202-3%203-4%201-7%204-4%205%202%202%2012%202%2013%201h3c4%202%208%202%208%201h5c-1-2-8-5-10-4v-1l-3-2c-4-2-5-4-3-4s1-2-3-6l-2-5%201-2h-2l-1-2-1%202m-120%2051c-4%203-4%2010-1%2012%203%203%2012%207%209%204-1-1%200-2%201-4%203-3%203-9%200-12s-6-3-9%200m84%206v9l4-1c5%200%206-1%206-6%200-4-2-6-6-6-2%201-2%201-2-1l-1-3-1%208m-51%201l1%207h4c6%200%208-2%208-7%200-6-2-8-8-8h-5v8m-68-3c-2%202-2%207-1%209l5%201c2-1%202%200%202%201l-4%201c-3%200-4%202%200%203%205%201%206-2%206-9v-7l-4-1-4%202M0%20391v9h401v-9c0-5%200-8-1-7%200%202-1%203-3%203l-3%201h3c3%200%203%200%203%203v4l-12-1-12%201-2%201c-1%200-2%200-1-1l-1-1c-19-2-32-2-33%200l-3%201-2-1h-9c-11%200-18-1-16-2%201-1-4-1-12-1l-19-1h-42a997%20997%200%2001-64%200c1%201%201%201-1%201l-3-1h-16c-13%200-14%200-10-1l5-2-3-1h-34a4526%204526%200%2000-81-2l-29-1v8'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEJElEQVQ4y11U30+TVxj+WmgZmQkMSCiElvKjUgrSlrZCbUtbW2g/2tIuDKRCtSirgIIVkFhIlE3Z7jRcuJvZCiZLGMaLLZu7445lcdnNlpmZTKcdqMv+gnnz7JwXPja8eHPe8+s57/s8z/cJFRUVEASBQqFQ0CiXy1FYWEjj/3OZTAYZGwsKCqBUKg7s8zW+L1itVmg0GpqoVCp0d3dTKJVKAueHpUeky0VFRXugSipCAqQ7bncXurq6EIlE4Ha7MTE+juydLBYXF1FVVb0PKl2UquUAUme0rtjdE+rq6mA2meBmoPqmJmi1WlgsFly7eg2jo2fwNiUEtle1Wq2mIqhVQbZ7jl9oaGhAKpWC1+ulvN1sxuDAAKtyAfPz88hkMlBVVdEFDibRkUgksLW1RY/wOQGXlZURCAHX16O2tpbmnZ2d8Pv9EEURd3M5rK6uEncSn/xycXExysvLaa7YE0ngbXAQu92OZDKJUCiEegbMD9bWajA2Nob19XVks1nYbLb9SnbbFA48QLzyV41tbejo6CA+fD4f+vv7wdVXqSqp6kzmCt7884ZaJy5ZNRKoJBQHI1F4Jbzd6upq1NTU4LBOh3Opc3C5nHivtBSHDr2LWDSKzc1NTE5OHhDnbZ9Sy06HA4bmZpiY0rrGRsxcmsHKygpaW1tRWVkJHXuglAEbDAbiVgLkFUm8yeSyfVsJXFHelkajRpRVsrS0RGJwS3g9Hmafq8Sdgz3MaeDg8gI5fSkSMPcgz0m092MxlJSUUKucu+XlZXgYl7ziPmZ2bpt0Ok2qc1sFAwHijpRV/Mcln7e0tEBo1uupDaPRiGAwiFzuLm7evIU2JhT/grjxebXcCWJQJNOTH/dEkID5Wj07K1jZgeLid2Bj7fD2P/1kGd89fAiX00FtSdbgh6cunIde30TzoqJdc7e3m9ErBkk8LbOZ4AicwGGLD612EeauKJxiHOJgCkZHGGrDMWiPuKBpcaLR7IUzGIcvlkSjyYMGFjq25gmPwB0ahtkVgaEjAMEV/RB9p2YRTszQ6B84jwjLe4fTCI3M4IOxDKLJy+g/ewXB+DQCQ1M4Ko7CGjgNWyAJk2+Yor07AUvPaQjHQqMIDV+kCI+kaew9OU3h6x9n4Gn0xqdoDPM9lpuOD+GIexBtnhMweocoeM5DsPhPss2B/UUjC/PxOCz+YVZBAtaeBI4GTlFuY7mN5Y7wGTgjZ+HqG6NRmvMQPr+Tw717X2Dj/gN89fU3LL7F9z88wqMff8LPvzzG8/w28tsvsb3zGq9e/42dV3/h2fM88n++xNM/8nj67AVe5Hfw25Pf8evjJxDs9k709HSTUrFYFPH4EC4wNS8x783NzuLy3BwmJybY55jCxelpLC4s4PrHH+HGjev47PZtbGx8iTX2J1pbW6W/0r8VypkVN0M4tgAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/f266a13c694ae28321109bc05a8911f3/502b1/sql-scaling-cover.png","srcSet":"/static/f266a13c694ae28321109bc05a8911f3/f2e6d/sql-scaling-cover.png 114w,\n/static/f266a13c694ae28321109bc05a8911f3/4ddba/sql-scaling-cover.png 229w,\n/static/f266a13c694ae28321109bc05a8911f3/502b1/sql-scaling-cover.png 457w,\n/static/f266a13c694ae28321109bc05a8911f3/7ddc2/sql-scaling-cover.png 686w,\n/static/f266a13c694ae28321109bc05a8911f3/435bf/sql-scaling-cover.png 914w,\n/static/f266a13c694ae28321109bc05a8911f3/6050d/sql-scaling-cover.png 1200w","srcWebp":"/static/f266a13c694ae28321109bc05a8911f3/15384/sql-scaling-cover.webp","srcSetWebp":"/static/f266a13c694ae28321109bc05a8911f3/31fce/sql-scaling-cover.webp 114w,\n/static/f266a13c694ae28321109bc05a8911f3/e3e25/sql-scaling-cover.webp 229w,\n/static/f266a13c694ae28321109bc05a8911f3/15384/sql-scaling-cover.webp 457w,\n/static/f266a13c694ae28321109bc05a8911f3/0258d/sql-scaling-cover.webp 686w,\n/static/f266a13c694ae28321109bc05a8911f3/64ea2/sql-scaling-cover.webp 914w,\n/static/f266a13c694ae28321109bc05a8911f3/9000d/sql-scaling-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%205v6l10%206%209%208-9-5-9-6c-1-1-1%209-1%2045a253%20253%200%20001%2048l-1%2041a457%20457%200%20001%2049l-1%2016c0%2014%200%2015%202%2013v3c-1%202-1%202%201%201%202%200%202%200%201%202v1c2-1%205%201%204%202H2l3%201c4%202%205%202%205%201v-1c2%200%203%202%201%204-1%201-2%200-5-1-5-3-6-2-6%208l1%208h1l-1%201-1%2053v53h13c18%201%20100%200%20141-1l141-1%20106%201V0H111v3c0%202%200%202-1%201V1L55%200H0v5m89%2029l-6%202c-1%202-1%202%203%201%205-3%206-1%201%203l-3%203%202%201c6%203%208%204%207%207%200%202%200%202%201%201%202-2%202-2%203%200l5%206h1c3%202%203-5%202-13-2-6-2-10%200-5l1%202%201%201v2c2%204%203%2010%202%2011-2%201%202%203%204%202%202%200%202-1%202-7-1-8%201-7%202%200%201%204%201%205%205%205%203%201%204%201%201%201-2%201-2%203-1%203l2%201v1l2-1%203%204c3%204%204%205%205%203s3-3%203%200v3l-2%202c-2%202-2%204%200%203l3%201c3%201%207%201%2010-1%202-3%206-2%2024%204%201%200%201%201-1%203-2%203-1%204%202%203l2%201v2c3%200%202%202%200%202-1%201-2%200-2-1s-1-2-7-3l-5-1c-1-1-13-6-16-6l2%201c2%201%202%202%201%202l-6-2c-5-3-11-3-13-1-3%202-2%203%204%204l5%201h-8l2%201c3%202%203%202%201%202-1%201%200%201%202%201%203%200%204%200%203-2%200-2%201-3%202-3%202%200%202%200%202%202-1%201-1%201%202%201h4l1%204-1-1h-1l-3%201c-2%200-2%200-1-1s1-1-1-2c-1-1-2-1-2%201-1%201-1%202-2%201l-9%202%209%201c11%201%2021%203%2019%204l-1%203c0%201%201%201%202-1l1-3c-1-1%200-1%201-2%203-1%203-1%202%201l1%201c1-1%208%202%208%205l3%201%204%201%207%203c11%205%2019%2010%2018%2011v1h-1l-1%201%206%207c3%201%203%200-1-4-2-3-2-4%200-2l2%201c3%200%205%201%204%203l1%201%202%202c0%202%200%202%201%201h2l1%201c-1%202%200%202%202%201%202-2%203-6%201-8l-1-4c-1-6-1-6-2-5-1%200-2-1-2-3l-2-3-1-2v-2h-5l-2-2c-1-3-4-5-5-3h-1c0-2-6-6-9-6-2%200-5-4-3-5%202%200-11-7-22-10-5-2-10-4-9-5h-2c-1%201-15-2-16-2v-6h6l1-4c0-4-2-7-4-8l-2%201-1%201-3%203c0%202-1%201-4-2l-5-8c-3-7-20-17-18-11%200%202%201%202-7%200-8-3-9-3-14-2m-23%208l-1%202h-2v2c-1-1-3%200-4%201h-4c-4-2-5-1-5%204%201%205%200%207-4%208v4c-1%203-1%204%201%201l3-2%205-5%203-5%201-1c0-2%200-3%201-2l1%201c-1%202%202%201%206-3%206-6%205-8-1-5m-5%2031l-1%203c0%202-4%204-6%204l-3%203-6%2011-1%202v1l3-3c0-2%200-2%201-1%200%202%201%202%205%201%204-2%207-8%207-13l3-5c1-1%202-4%200-4l-2%201m257%202c-4%202-7%208-6%2015%200%204%207%2011%2011%2012%207%201%2015-5%2015-12%200-13-9-19-20-15m-141%2041c0%202%200%202-1%201-2-2-2-2-3%200%200%202-1%203-2%203l-1%202-1%202v11c1%202%201%202%202%200s1-2%201%201%205%208%206%206l1-1h1c2-1%206%200%205%201l1%202c1%201%201%200%201-2l2-1%201%201v2l1%202%201%201-1%201h-1l1%203c1%200%201%201-1%202v3c2%201%202%201%203-2l1-3v3c-1%204-1%205%204%205%204%201%2015%207%2014%208l-4-2c-3-2-15-5-16-5l-2%204-3%204%206%207%207%207%205-6%205-5%204%203c4%203%204%204%204%2011v9c-1%202%200%208%201%206%202-1%204-12%203-14l1-3%201%203%201%201%201-3c0-2%200-2%201-1l1-4%201-8c1-2%200-17-2-21s-9-12-11-12c-4%200-5%200-6-4%200-3-7-9-20-15-10-5-13-6-13-3m-85%2014c-20%205-34%2010-38%2013-7%205-6%205%2019-2l11-2%207-4%2010-5%204-2h-4l-9%202m15%207c0%201%206%208%209%209l5%204c2%203%201%203-2%200l-5-4-3-1-3-3-2-3v4l-1%201c0%202%203%206%203%204h3l2%201%206%204%203%201%201%201%202%202c1-1%200-3-1-5-2-4-3-5%200-3l2%201-4-4-4-2v-1h-1l-1-1-4-3c-4-3-5-4-5-2m18%2028c-3%207-5%2011-8%2011-3%201-5-1-5-3s-6-3-7-1v2c4%201%209%205%2010%206h-4l-3%2011-2%202v-1c0-2%200-3-5-5-6-3-6-3-10%203-7%2011-8%2014-6%2016%202%201%202%202-2%205v5c1%205%201%207-1%207l5%203%207%203c1%200%202%201%201%203%200%203%200%203-3%202l-7-3c-3-1-4-1-3-3l-1-2v2h-5l-8%201h1c16-2%2025%2013%2024%2037v8l1-1-2%204-1%202%204-4c2-3%204-4%202%200v3c-2%201-3%204-1%204l2-1%201-2h1c-2-1-1-2%201-1s3%202%202%204c0%203%203%204%2010%204h5v-12l-1-2c0-8-10-28-17-34-3-2-4-6-2-7v-5c-1-4-2-5-4-4-2%200-5-3-2-4l-2-3c-1-1-3-2-4-1-2%200-2%200%200-3%204-5%206-6%207-4s4%202%205%200h1v3l-4%207%203-2%204-3c2%200%2012-19%2010-20-2%200%201-4%203-4%201%200%205-5%205-8l3-7%203-8c-1-2-1-2-1%200m42%2036c-5%2015-5%2016%200%2019l4%202%201-3c2-3%202-3%204-2v1c-4%200-1%205%202%205l4%202c2%201%202%201%202-1v-3l1%203c0%202%201%203%202%203%202%201%202%201%202-2%200-2-1-3-7-7l-7-4v-4c1-4-1-8-5-8l-2-1h-1m35%2015c-6%209-9%2016-7%2018%205%204%205%204%209-9l3-11c1-5%200-4-5%202m48%207v2l-1%202s-2%202-2%205l-3%208-1%205%202-3c0-2%201-3%202-3v1l1%201c2-1%201%201-1%204l-3%202c-1-1-2%200-1%202v1c-2-1-3%200-4%203-3%203-3%205%200%205l1%201c0%203%203%200%206-6l4-8%205-15c0-2-3-8-5-7m-85%202c-1%201%200%202%201%203%202%201%202%201-3%201h-7l-1%202c-1%201-1%201%202%201%208-2%2012-2%2012-1l-1%201c-5%200-6%200-5%202v1l1%203c2%202%203%202%206%202l3%201%202%201-1-5-1-5%209%202h1c0-1-3-4-8-6-9-4-10-5-10-3m71%2036v2h-2l-3-1v1l6%208%201%204c0%201%200%202-3%203-4%201-7%204-4%205%202%202%2012%202%2013%201h3c4%202%208%202%208%201h5c-1-2-8-5-10-4v-1l-3-2c-4-2-5-4-3-4s1-2-3-6l-2-5%201-2h-2l-1-2-1%202m-120%2051c-4%203-4%2010-1%2012%203%203%2012%207%209%204-1-1%200-2%201-4%203-3%203-9%200-12s-6-3-9%200m84%206v9l4-1c5%200%206-1%206-6%200-4-2-6-6-6-2%201-2%201-2-1l-1-3-1%208m-51%201l1%207h4c6%200%208-2%208-7%200-6-2-8-8-8h-5v8m-68-3c-2%202-2%207-1%209l5%201c2-1%202%200%202%201l-4%201c-3%200-4%202%200%203%205%201%206-2%206-9v-7l-4-1-4%202M0%20391v9h401v-9c0-5%200-8-1-7%200%202-1%203-3%203l-3%201h3c3%200%203%200%203%203v4l-12-1-12%201-2%201c-1%200-2%200-1-1l-1-1c-19-2-32-2-33%200l-3%201-2-1h-9c-11%200-18-1-16-2%201-1-4-1-12-1l-19-1h-42a997%20997%200%2001-64%200c1%201%201%201-1%201l-3-1h-16c-13%200-14%200-10-1l5-2-3-1h-34a4526%204526%200%2000-81-2l-29-1v8'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/f266a13c694ae28321109bc05a8911f3/6050d/sql-scaling-cover.png"}}}]}},"staticQueryHashes":["1609575157","2068910035","2361467917","2361467917","3838421970","500183989","5650841"]}