{"@attributes":{"version":"2.0"},"channel":{"title":"Rigo Moran","link":"https:\/\/rigomoran.com\/","description":"Recent content on Rigo Moran","generator":"Hugo","language":"en-us","item":[{"title":"Harden Ubuntu security","link":"https:\/\/rigomoran.com\/harden-ubuntu\/","pubDate":"Wed, 20 Nov 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/harden-ubuntu\/","description":"<p>Not as hard as I thought at least to cover the essentials. This has recently come up twice for me, first DHH talked about Linux security as <a href=\"https:\/\/youtu.be\/-cEn_83zRFw?si=iYoeUfJa09DFtO6h&amp;t=2138\">locking the front door<\/a> then in this guide on <a href=\"https:\/\/www.youtube.com\/watch?v=F-9KWQByeU0&amp;t=1354s\">setting up a production-ready VPS<\/a> (A+ guide BTW). Similar steps were mentioned in both but I\u2019ll review the latter since it\u2019s my current use case.<\/p>\n<p>For fresh installs start by creating a new user account with <code>sudo<\/code> permissions. Copy my public SSH key from my local laptop to the remote server. Then lock down SSH access to non-root users and disable password authentication only key-based authentication is allowed.<\/p>"},{"title":"Replace Docker Desktop with Colima","link":"https:\/\/rigomoran.com\/colima\/","pubDate":"Tue, 01 Oct 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/colima\/","description":"<p>Ever since Docker Desktop changed is pricing model I\u2019ve been using Rancher Desktop as a replacement. Its works fine but I recently noticed a few coworkers using <a href=\"https:\/\/github.com\/abiosoft\/colima\">Colima<\/a>.<\/p>\n<blockquote>\n<p>Note: For individual users Docker Desktop is still free<\/p>\n<\/blockquote>\n<p>Colima, is short for Containers on <a href=\"https:\/\/lima-vm.io\/\">Lima<\/a>. Where Lima is a separate tool Which aims bring <em><strong>Li<\/strong><\/em>nux virtual <em><strong>Ma<\/strong><\/em>chines to macOS and Linux. Apparently its used by Rancher Desktop and Podman Desktop under the hood. Colima is a minimal CLI with sensible defaults that provides container runtimes for macOS. Its compatible with the latest and greatest versions of Docker BuildKit &amp; Compose.<\/p>"},{"title":"Debugging Git GPG Signing Issues","link":"https:\/\/rigomoran.com\/debug-git-gpg\/","pubDate":"Sat, 10 Aug 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/debug-git-gpg\/","description":"<p>I&rsquo;m relatively new to signing my commits. And I recently stumbled into a new somewhat cryptic Git error. Here&rsquo;s what I did to debug the problem. Hope it helps you.<\/p>\n<p><strong>The scenario:<\/strong> You have Git configured to use a GPG signing key for your commits. You craft a solid commit message, hit enter, and&hellip;<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">&gt; git commit -m -S <span class=\"s2\">&#34;my awesome commit&#34;<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\">error: gpg failed to sign the data\n<\/span><\/span><span class=\"line\"><span class=\"cl\">fatal: failed to write commit object\n<\/span><\/span><\/code><\/pre><\/div><p>So Git was not able to write our commit due to some issue with GPG. Since we don&rsquo;t know what the actual problem is or what a potential fix could be we need to dive deeper.<\/p>"},{"title":"Using Python Debugger PDB","link":"https:\/\/rigomoran.com\/using-python-debugger\/","pubDate":"Thu, 21 Mar 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/using-python-debugger\/","description":"Summary of the example"},{"title":"Tapping into GenAI","link":"https:\/\/rigomoran.com\/tapping-into-genai\/","pubDate":"Wed, 21 Feb 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/tapping-into-genai\/","description":"A Step-by-Step Guide for Querying Your Snowflake Data Warehouse with LangChain &amp; AWS Bedrock"},{"title":"Enable dark mode for kitty, fish, Neovim","link":"https:\/\/rigomoran.com\/theme-toggle-for-kitty-nvim\/","pubDate":"Thu, 25 Jan 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/theme-toggle-for-kitty-nvim\/","description":"Summary of the example"},{"title":"Experimenting with Google APIs","link":"https:\/\/rigomoran.com\/google-api-playground\/","pubDate":"Tue, 23 Jan 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/google-api-playground\/","description":"<p>Working with Google APIs can feel overwhelming due to the variety of APIs, processes around authentication\/authorization, requesting appropriate scopes, and navigating all the available libraries.<\/p>\n<p>Luckily for us, Google put together an <a href=\"https:\/\/developers.google.com\/oauthplayground\/\">API Playground<\/a> to quickly define your scope, authenticate, request tokens, and execute queries.<\/p>\n<p>Here&rsquo;s the breakdown:<\/p>\n<ol>\n<li>\n<p>Select an API and the required scope<\/p>\n<\/li>\n<li>\n<p>Request a <em>Refresh Token<\/em> and <em>Access Token<\/em><\/p>\n<\/li>\n<li>\n<p>Pick an API Endpoint<\/p>\n<\/li>\n<li>\n<p>Construct a payload &amp; send<\/p>"},{"title":"Harnessing AWS Bedrock & Langchain for Advanced Chatbots","link":"https:\/\/rigomoran.com\/genai\/","pubDate":"Tue, 23 Jan 2024 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/genai\/","description":"<!DOCTYPE html><html lang=\"en-US\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,height=device-height,initial-scale=1.0\"><meta name=\"apple-mobile-web-app-capable\" content=\"yes\"><meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"><meta property=\"og:type\" content=\"website\"><meta name=\"twitter:card\" content=\"summary\"><style>@media screen{body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button{-webkit-tap-highlight-color:transparent;-webkit-appearance:none;appearance:none;background-color:transparent;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover{opacity:1}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover:active{opacity:.6}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:transparent url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNNjggOTAgMjggNTBsNDAtNDAiLz48L3N2Zz4=\") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:transparent url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJtMzIgOTAgNDAtNDAtNDAtNDAiLz48L3N2Zz4=\") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:transparent url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgeD0iMTAiIHk9IjIwIiBjbGFzcz0iYSIgcng9IjUuNjciLz48cGF0aCBkPSJNNDAgNzBIMjBWNTBtMjAgMEwyMCA3MG00MC00MGgyMHYyMG0tMjAgMCAyMC0yMCIgY2xhc3M9ImEiLz48L3N2Zz4=\") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen]{background-image:url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgeD0iMTAiIHk9IjIwIiBjbGFzcz0iYSIgcng9IjUuNjciLz48cGF0aCBkPSJNMjAgNTBoMjB2MjBtLTIwIDAgMjAtMjBtNDAgMEg2MFYzMG0yMCAwTDYwIDUwIiBjbGFzcz0iYSIvPjwvc3ZnPg==\")}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter]{background:transparent url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNODcuOCA0Ny41Qzg5IDUwIDg3LjcgNTIgODUgNTJIMzVhOC43IDguNyAwIDAgMS03LjItNC41bC0xNS42LTMxQzExIDE0IDEyLjIgMTIgMTUgMTJoNTBhOC44IDguOCAwIDAgMSA3LjIgNC41ek02MCA1MnYzNm0tMTAgMGgyME00NSA0MmgyMCIvPjwvc3ZnPg==\") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button.bespoke-marp-presenter-note-bigger{background:transparent url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNMTIgNTBoODBNNTIgOTBWMTAiLz48L3N2Zz4=\") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button.bespoke-marp-presenter-note-smaller{background:transparent url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNMTIgNTBoODAiLz48L3N2Zz4=\") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}}@keyframes __bespoke_marp_transition_reduced_outgoing__{0%{opacity:1}to{opacity:0}}@keyframes __bespoke_marp_transition_reduced_incoming__{0%{mix-blend-mode:plus-lighter;opacity:0}to{mix-blend-mode:plus-lighter;opacity:1}}.bespoke-marp-note,.bespoke-marp-osc,.bespoke-progress-parent{display:none;transition:none}@media screen{::view-transition-group(*){animation-duration:var(--marp-bespoke-transition-animation-duration,.5s);animation-timing-function:ease}::view-transition-new(*),::view-transition-old(*){animation-delay:0s;animation-direction:var(--marp-bespoke-transition-animation-direction,normal);animation-duration:var(--marp-bespoke-transition-animation-duration,.5s);animation-fill-mode:both;animation-name:var(--marp-bespoke-transition-animation-name,var(--marp-bespoke-transition-animation-name-fallback,__bespoke_marp_transition_no_animation__));mix-blend-mode:normal}::view-transition-old(*){--marp-bespoke-transition-animation-name-fallback:__bespoke_marp_transition_reduced_outgoing__;animation-timing-function:ease}::view-transition-new(*){--marp-bespoke-transition-animation-name-fallback:__bespoke_marp_transition_reduced_incoming__;animation-timing-function:ease}::view-transition-new(root),::view-transition-old(root){animation-timing-function:linear}::view-transition-new(__bespoke_marp_transition_osc__),::view-transition-old(__bespoke_marp_transition_osc__){animation-duration:0s!important;animation-name:__bespoke_marp_transition_osc__!important}::view-transition-new(__bespoke_marp_transition_osc__){opacity:0!important}.bespoke-marp-transition-warming-up::view-transition-group(*),.bespoke-marp-transition-warming-up::view-transition-new(*),.bespoke-marp-transition-warming-up::view-transition-old(*){animation-play-state:paused!important}body,html{height:100%;margin:0}body{background:#000;overflow:hidden}svg.bespoke-marp-slide{content-visibility:hidden;opacity:0;pointer-events:none;z-index:-1}svg.bespoke-marp-slide:not(.bespoke-marp-active) *{view-transition-name:none!important}svg.bespoke-marp-slide.bespoke-marp-active{content-visibility:visible;opacity:1;pointer-events:auto;z-index:0}svg.bespoke-marp-slide.bespoke-marp-active.bespoke-marp-active-ready *{animation-name:__bespoke_marp__!important}@supports not (content-visibility:hidden){svg.bespoke-marp-slide[data-bespoke-marp-load=hideable]{display:none}svg.bespoke-marp-slide[data-bespoke-marp-load=hideable].bespoke-marp-active{display:block}}}@media screen and (prefers-reduced-motion:reduce){svg.bespoke-marp-slide *{view-transition-name:none!important}}@media screen{[data-bespoke-marp-fragment=inactive]{visibility:hidden}body[data-bespoke-view=\"\"] .bespoke-marp-parent,body[data-bespoke-view=next] .bespoke-marp-parent{inset:0;position:absolute}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc{view-transition-name:__bespoke_marp_transition_osc__;background:rgba(0,0,0,.65);border-radius:7px;bottom:50px;color:#fff;contain:paint;display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;left:50%;line-height:0;opacity:1;padding:12px;position:absolute;touch-action:manipulation;transform:translateX(-50%);transition:opacity .2s linear;-webkit-user-select:none;user-select:none;white-space:nowrap;will-change:transform;z-index:1}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>*,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>*{margin-left:6px}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>:first-child,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>:first-child{margin-left:0}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>span,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span{opacity:.8}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page]{display:inline-block;min-width:140px;text-align:center}body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=\"\"] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev]{height:32px;line-height:32px;width:32px}body[data-bespoke-view=\"\"] .bespoke-marp-parent.bespoke-marp-inactive,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive{cursor:none}body[data-bespoke-view=\"\"] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc{opacity:0;pointer-events:none}body[data-bespoke-view=\"\"] svg.bespoke-marp-slide,body[data-bespoke-view=next] svg.bespoke-marp-slide{height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=\"\"] .bespoke-progress-parent{background:#222;display:flex;height:5px;width:100%}body[data-bespoke-view=\"\"] .bespoke-progress-parent+.bespoke-marp-parent{top:5px}body[data-bespoke-view=\"\"] .bespoke-progress-parent .bespoke-progress-bar{background:#0288d1;flex:0 0 0;transition:flex-basis .2s cubic-bezier(0,1,1,1)}body[data-bespoke-view=next]{background:transparent}body[data-bespoke-view=presenter]{background:#161616}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container{display:grid;font-family:Helvetica,Arial,sans-serif;grid-template:\"current dragbar next\" minmax(140px,1fr) \"current dragbar note\" 2fr \"info dragbar note\" 3em;grid-template-columns:minmax(3px,var(--bespoke-marp-presenter-split-ratio,66%)) 0 minmax(3px,1fr);height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent{grid-area:current;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide{height:calc(100% - 40px);left:20px;pointer-events:none;position:absolute;top:20px;-webkit-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide.bespoke-marp-active{filter:drop-shadow(0 3px 10px rgba(0,0,0,.5))}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-dragbar-container{background:#0288d1;cursor:col-resize;grid-area:dragbar;margin-left:-3px;opacity:0;position:relative;transition:opacity .4s linear .1s;width:6px;z-index:10}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-dragbar-container:hover{opacity:1}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-dragbar-container.active{opacity:1;transition-delay:0s}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container{background:#222;cursor:pointer;display:none;grid-area:next;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container iframe.bespoke-marp-presenter-next{background:transparent;border:0;display:block;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));height:calc(100% - 40px);left:20px;pointer-events:none;position:absolute;top:20px;-webkit-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container{background:#222;color:#eee;grid-area:note;position:relative;z-index:1}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button{height:1.5em;line-height:1.5em;width:1.5em}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-presenter-note-wrapper{display:block;inset:0;position:absolute}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-presenter-note-buttons{background:rgba(0,0,0,.65);border-radius:4px;bottom:0;display:flex;gap:4px;margin:12px;opacity:0;padding:6px;pointer-events:none;position:absolute;right:0;transition:opacity .2s linear}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-presenter-note-buttons:focus-within,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-presenter-note-wrapper:focus-within+.bespoke-marp-presenter-note-buttons,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container:hover .bespoke-marp-presenter-note-buttons{opacity:1;pointer-events:auto}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note{word-wrap:break-word;box-sizing:border-box;font-size:calc(1.1em*var(--bespoke-marp-note-font-scale, 1));height:calc(100% - 40px);margin:20px;overflow:auto;padding-right:3px;scrollbar-color:hsla(0,0%,93%,.5) transparent;scrollbar-width:thin;white-space:pre-wrap;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar{width:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-track{background:transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-thumb{background:hsla(0,0%,93%,.5);border-radius:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note:empty{pointer-events:none}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:first-child{margin-top:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:last-child{margin-bottom:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container{align-items:center;box-sizing:border-box;color:#eee;display:flex;flex-wrap:nowrap;grid-area:info;justify-content:center;overflow:hidden;padding:0 10px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{box-sizing:border-box;display:block;padding:0 10px;white-space:nowrap;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{height:1.5em;line-height:1.5em;width:1.5em}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page{order:2;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page .bespoke-marp-presenter-info-page-text{display:inline-block;min-width:120px;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time{color:#999;order:1;text-align:left}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{color:#999;order:3;text-align:right}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer:hover{cursor:pointer}}@media print{.bespoke-marp-presenter-info-container,.bespoke-marp-presenter-next-container,.bespoke-marp-presenter-note-container{display:none}}<\/style><style>div#\\:\\$p>svg>foreignObject>section{width:1280px;height:720px;box-sizing:border-box;overflow:hidden;position:relative;scroll-snap-align:center center}div#\\:\\$p>svg>foreignObject>section:after{bottom:0;content:attr(data-marpit-pagination);padding:inherit;pointer-events:none;position:absolute;right:0}div#\\:\\$p>svg>foreignObject>section:not([data-marpit-pagination]):after{display:none}\/* Normalization *\/div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1){font-size:2em;margin:0.67em 0}div#\\:\\$p>svg>foreignObject>section video::-webkit-media-controls{will-change:transform}@page{size:1280px 720px;margin:0}@media print{body,html{background-color:#fff;margin:0;page-break-inside:avoid;break-inside:avoid-page}div#\\:\\$p>svg>foreignObject>section{page-break-before:always;break-before:page}div#\\:\\$p>svg>foreignObject>section,div#\\:\\$p>svg>foreignObject>section *{-webkit-print-color-adjust:exact!important;animation-delay:0s!important;animation-duration:0s!important;color-adjust:exact!important;transition:none!important}div#\\:\\$p>svg[data-marpit-svg]{display:block;height:100vh;width:100vw}}div#\\:\\$p>svg>foreignObject>:where(section){container-type:size}div#\\:\\$p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em}\n\/*!\n * Marp default theme.\n *\n * @theme default\n * @author Yuki Hattori\n *\n * @auto-scaling true\n * @size 16:9 1280px 720px\n * @size 4:3 960px 720px\n *\/div#\\:\\$p>svg>foreignObject>section,div#\\:\\$p>svg>foreignObject>section [data-theme=light]{--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#1f2328;--color-fg-muted:#656d76;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#d1242f;color-scheme:light}div#\\:\\$p>svg>foreignObject>section [data-theme=dark],div#\\:\\$p>svg>foreignObject>section:where(.invert){--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#c9d1d9;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#c9d1d9;--color-prettylights-syntax-markup-bold:#c9d1d9;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#c9d1d9;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-brackethighlighter-angle:#8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-fg-default:#e6edf3;--color-fg-muted:#7d8590;--color-fg-subtle:#6e7681;--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-border-default:#30363d;--color-border-muted:#21262d;--color-neutral-muted:hsla(215,8%,47%,.4);--color-accent-fg:#2f81f7;--color-accent-emphasis:#1f6feb;--color-attention-subtle:rgba(187,128,9,.15);--color-danger-fg:#f85149;color-scheme:dark}div#\\:\\$p>svg>foreignObject>section{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word;background-color:var(--color-canvas-default);color:var(--color-fg-default);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5;margin:0}div#\\:\\$p>svg>foreignObject>section{--marpit-root-font-size:16px}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link:before,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link:before,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link:before,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link:before,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link:before,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link:before{background-color:currentColor;content:\" \";display:inline-block;height:16px;-webkit-mask-image:url('data:image\/svg+xml;charset=utf-8,<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0z\"\/><\/svg>');mask-image:url('data:image\/svg+xml;charset=utf-8,<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0z\"\/><\/svg>');width:16px}div#\\:\\$p>svg>foreignObject>section details,div#\\:\\$p>svg>foreignObject>section figcaption,div#\\:\\$p>svg>foreignObject>section figure{display:block}div#\\:\\$p>svg>foreignObject>section summary{display:list-item}div#\\:\\$p>svg>foreignObject>section [hidden]{display:none!important}div#\\:\\$p>svg>foreignObject>section a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}div#\\:\\$p>svg>foreignObject>section abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}div#\\:\\$p>svg>foreignObject>section b,div#\\:\\$p>svg>foreignObject>section strong{font-weight:var(--base-text-weight-semibold,600)}div#\\:\\$p>svg>foreignObject>section dfn{font-style:italic}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1){border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}div#\\:\\$p>svg>foreignObject>section mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}div#\\:\\$p>svg>foreignObject>section small{font-size:90%}div#\\:\\$p>svg>foreignObject>section sub,div#\\:\\$p>svg>foreignObject>section sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}div#\\:\\$p>svg>foreignObject>section sub{bottom:-.25em}div#\\:\\$p>svg>foreignObject>section sup{top:-.5em}div#\\:\\$p>svg>foreignObject>section img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre),div#\\:\\$p>svg>foreignObject>section code,div#\\:\\$p>svg>foreignObject>section kbd,div#\\:\\$p>svg>foreignObject>section samp{font-family:monospace;font-size:1em}div#\\:\\$p>svg>foreignObject>section figure{margin:1em 40px}div#\\:\\$p>svg>foreignObject>section hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}div#\\:\\$p>svg>foreignObject>section input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}div#\\:\\$p>svg>foreignObject>section [type=button],div#\\:\\$p>svg>foreignObject>section [type=reset],div#\\:\\$p>svg>foreignObject>section [type=submit]{-webkit-appearance:button}div#\\:\\$p>svg>foreignObject>section [type=checkbox],div#\\:\\$p>svg>foreignObject>section [type=radio]{box-sizing:border-box;padding:0}div#\\:\\$p>svg>foreignObject>section [type=number]::-webkit-inner-spin-button,div#\\:\\$p>svg>foreignObject>section [type=number]::-webkit-outer-spin-button{height:auto}div#\\:\\$p>svg>foreignObject>section [type=search]::-webkit-search-cancel-button,div#\\:\\$p>svg>foreignObject>section [type=search]::-webkit-search-decoration{-webkit-appearance:none}div#\\:\\$p>svg>foreignObject>section ::-webkit-input-placeholder{color:inherit;opacity:.54}div#\\:\\$p>svg>foreignObject>section ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}div#\\:\\$p>svg>foreignObject>section a:hover{text-decoration:underline}div#\\:\\$p>svg>foreignObject>section ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}div#\\:\\$p>svg>foreignObject>section ::placeholder{color:var(--color-fg-subtle);opacity:1}div#\\:\\$p>svg>foreignObject>section hr:after,div#\\:\\$p>svg>foreignObject>section hr:before{content:\"\";display:table}div#\\:\\$p>svg>foreignObject>section hr:after{clear:both}div#\\:\\$p>svg>foreignObject>section table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}div#\\:\\$p>svg>foreignObject>section td,div#\\:\\$p>svg>foreignObject>section th{padding:0}div#\\:\\$p>svg>foreignObject>section details summary{cursor:pointer}div#\\:\\$p>svg>foreignObject>section details:not([open])>:not(summary){display:none!important}div#\\:\\$p>svg>foreignObject>section [role=button]:focus,div#\\:\\$p>svg>foreignObject>section a:focus,div#\\:\\$p>svg>foreignObject>section input[type=checkbox]:focus,div#\\:\\$p>svg>foreignObject>section input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}div#\\:\\$p>svg>foreignObject>section [role=button]:focus:not(:focus-visible),div#\\:\\$p>svg>foreignObject>section a:focus:not(:focus-visible),div#\\:\\$p>svg>foreignObject>section input[type=checkbox]:focus:not(:focus-visible),div#\\:\\$p>svg>foreignObject>section input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}div#\\:\\$p>svg>foreignObject>section [role=button]:focus-visible,div#\\:\\$p>svg>foreignObject>section a:focus-visible,div#\\:\\$p>svg>foreignObject>section input[type=checkbox]:focus-visible,div#\\:\\$p>svg>foreignObject>section input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}div#\\:\\$p>svg>foreignObject>section a:not([class]):focus,div#\\:\\$p>svg>foreignObject>section a:not([class]):focus-visible,div#\\:\\$p>svg>foreignObject>section input[type=checkbox]:focus,div#\\:\\$p>svg>foreignObject>section input[type=checkbox]:focus-visible,div#\\:\\$p>svg>foreignObject>section input[type=radio]:focus,div#\\:\\$p>svg>foreignObject>section input[type=radio]:focus-visible{outline-offset:0}div#\\:\\$p>svg>foreignObject>section kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1),div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2),div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3),div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4),div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5),div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6){font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2){border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2),div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3){font-weight:var(--base-text-weight-semibold,600)}div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3){font-size:1.25em}div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4){font-size:1em}div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4),div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5){font-weight:var(--base-text-weight-semibold,600)}div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5){font-size:.875em}div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6){color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}div#\\:\\$p>svg>foreignObject>section p{margin-bottom:10px;margin-top:0}div#\\:\\$p>svg>foreignObject>section blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}div#\\:\\$p>svg>foreignObject>section ol,div#\\:\\$p>svg>foreignObject>section ul{margin-bottom:0;margin-top:0;padding-left:2em}div#\\:\\$p>svg>foreignObject>section ol ol,div#\\:\\$p>svg>foreignObject>section ul ol{list-style-type:lower-roman}div#\\:\\$p>svg>foreignObject>section ol ol ol,div#\\:\\$p>svg>foreignObject>section ol ul ol,div#\\:\\$p>svg>foreignObject>section ul ol ol,div#\\:\\$p>svg>foreignObject>section ul ul ol{list-style-type:lower-alpha}div#\\:\\$p>svg>foreignObject>section dd{margin-left:0}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre),div#\\:\\$p>svg>foreignObject>section code,div#\\:\\$p>svg>foreignObject>section samp,div#\\:\\$p>svg>foreignObject>section tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre){word-wrap:normal;margin-bottom:0;margin-top:0}div#\\:\\$p>svg>foreignObject>section .octicon{fill:currentColor;display:inline-block;overflow:visible!important;vertical-align:text-bottom}div#\\:\\$p>svg>foreignObject>section input::-webkit-inner-spin-button,div#\\:\\$p>svg>foreignObject>section input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}div#\\:\\$p>svg>foreignObject>section:after,div#\\:\\$p>svg>foreignObject>section:before{\n \/* content:\"\"; *\/display:table}div#\\:\\$p>svg>foreignObject>section:after{clear:both}div#\\:\\$p>svg>foreignObject>section>:first-child{margin-top:0!important}div#\\:\\$p>svg>foreignObject>section>:last-child{margin-bottom:0!important}div#\\:\\$p>svg>foreignObject>section a:not([href]){color:inherit;text-decoration:none}div#\\:\\$p>svg>foreignObject>section .absent{color:var(--color-danger-fg)}div#\\:\\$p>svg>foreignObject>section .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}div#\\:\\$p>svg>foreignObject>section .anchor:focus{outline:none}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre),div#\\:\\$p>svg>foreignObject>section blockquote,div#\\:\\$p>svg>foreignObject>section details,div#\\:\\$p>svg>foreignObject>section dl,div#\\:\\$p>svg>foreignObject>section ol,div#\\:\\$p>svg>foreignObject>section p,div#\\:\\$p>svg>foreignObject>section table,div#\\:\\$p>svg>foreignObject>section ul{margin-bottom:16px;margin-top:0}div#\\:\\$p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#\\:\\$p>svg>foreignObject>section blockquote>:last-child{margin-bottom:0}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1) .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2) .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3) .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4) .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5) .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6) .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor{text-decoration:none}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link{visibility:visible}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1) code,div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1) tt,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2) code,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2) tt,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3) code,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3) tt,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4) code,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4) tt,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5) code,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5) tt,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6) code,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6) tt{font-size:inherit;padding:0 .2em}div#\\:\\$p>svg>foreignObject>section summary :is(h1,marp-h1),div#\\:\\$p>svg>foreignObject>section summary :is(h2,marp-h2),div#\\:\\$p>svg>foreignObject>section summary :is(h3,marp-h3),div#\\:\\$p>svg>foreignObject>section summary :is(h4,marp-h4),div#\\:\\$p>svg>foreignObject>section summary :is(h5,marp-h5),div#\\:\\$p>svg>foreignObject>section summary :is(h6,marp-h6){display:inline-block}div#\\:\\$p>svg>foreignObject>section summary :is(h1,marp-h1) .anchor,div#\\:\\$p>svg>foreignObject>section summary :is(h2,marp-h2) .anchor,div#\\:\\$p>svg>foreignObject>section summary :is(h3,marp-h3) .anchor,div#\\:\\$p>svg>foreignObject>section summary :is(h4,marp-h4) .anchor,div#\\:\\$p>svg>foreignObject>section summary :is(h5,marp-h5) .anchor,div#\\:\\$p>svg>foreignObject>section summary :is(h6,marp-h6) .anchor{margin-left:-40px}div#\\:\\$p>svg>foreignObject>section summary :is(h1,marp-h1),div#\\:\\$p>svg>foreignObject>section summary :is(h2,marp-h2){border-bottom:0;padding-bottom:0}div#\\:\\$p>svg>foreignObject>section ol.no-list,div#\\:\\$p>svg>foreignObject>section ul.no-list{list-style-type:none;padding:0}div#\\:\\$p>svg>foreignObject>section ol[type=\"a s\"]{list-style-type:lower-alpha}div#\\:\\$p>svg>foreignObject>section ol[type=\"A s\"]{list-style-type:upper-alpha}div#\\:\\$p>svg>foreignObject>section ol[type=\"i s\"]{list-style-type:lower-roman}div#\\:\\$p>svg>foreignObject>section ol[type=\"I s\"]{list-style-type:upper-roman}div#\\:\\$p>svg>foreignObject>section div>ol:not([type]),div#\\:\\$p>svg>foreignObject>section ol[type=\"1\"]{list-style-type:decimal}div#\\:\\$p>svg>foreignObject>section ol ol,div#\\:\\$p>svg>foreignObject>section ol ul,div#\\:\\$p>svg>foreignObject>section ul ol,div#\\:\\$p>svg>foreignObject>section ul ul{margin-bottom:0;margin-top:0}div#\\:\\$p>svg>foreignObject>section li>p{margin-top:16px}div#\\:\\$p>svg>foreignObject>section li+li{margin-top:.25em}div#\\:\\$p>svg>foreignObject>section dl{padding:0}div#\\:\\$p>svg>foreignObject>section dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}div#\\:\\$p>svg>foreignObject>section dl dd{margin-bottom:16px;padding:0 16px}div#\\:\\$p>svg>foreignObject>section table th{font-weight:var(--base-text-weight-semibold,600)}div#\\:\\$p>svg>foreignObject>section table td,div#\\:\\$p>svg>foreignObject>section table th{border:1px solid var(--color-border-default);padding:6px 13px}div#\\:\\$p>svg>foreignObject>section table td>:last-child{margin-bottom:0}div#\\:\\$p>svg>foreignObject>section table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}div#\\:\\$p>svg>foreignObject>section table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}div#\\:\\$p>svg>foreignObject>section table img{background-color:transparent}div#\\:\\$p>svg>foreignObject>section img[align=right]{padding-left:20px}div#\\:\\$p>svg>foreignObject>section img[align=left]{padding-right:20px}div#\\:\\$p>svg>foreignObject>section .emoji{background-color:transparent;max-width:none;vertical-align:text-top}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).frame,div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).frame>:is(span,marp-span){display:block;overflow:hidden}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).frame>:is(span,marp-span){border:1px solid var(--color-border-default);float:left;margin:13px 0 0;padding:7px;width:auto}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).frame :is(span,marp-span) img{display:block;float:left}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).frame :is(span,marp-span) :is(span,marp-span){clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).align-center{clear:both;display:block;overflow:hidden}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).align-center>:is(span,marp-span){display:block;margin:13px auto 0;overflow:hidden;text-align:center}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).align-center :is(span,marp-span) img{margin:0 auto;text-align:center}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).align-right{clear:both;display:block;overflow:hidden}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).align-right>:is(span,marp-span){display:block;margin:13px 0 0;overflow:hidden;text-align:right}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).align-right :is(span,marp-span) img{margin:0;text-align:right}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).float-left{display:block;float:left;margin-right:13px;overflow:hidden}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).float-left :is(span,marp-span){margin:13px 0 0}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).float-right{display:block;float:right;margin-left:13px;overflow:hidden}div#\\:\\$p>svg>foreignObject>section :is(span,marp-span).float-right>:is(span,marp-span){display:block;margin:13px auto 0;overflow:hidden;text-align:right}div#\\:\\$p>svg>foreignObject>section code,div#\\:\\$p>svg>foreignObject>section tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}div#\\:\\$p>svg>foreignObject>section code br,div#\\:\\$p>svg>foreignObject>section tt br{display:none}div#\\:\\$p>svg>foreignObject>section del code{text-decoration:inherit}div#\\:\\$p>svg>foreignObject>section samp{font-size:85%}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) code{font-size:100%}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre)>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}div#\\:\\$p>svg>foreignObject>section .highlight{margin-bottom:16px}div#\\:\\$p>svg>foreignObject>section .highlight :is(pre,marp-pre){margin-bottom:0;word-break:normal}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre){background-color:var(--color-canvas-subtle);border-radius:6px;color:var(--color-fg-default);font-size:85%;line-height:1.45;overflow:auto;padding:16px}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) code,div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) tt{word-wrap:normal;background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0}div#\\:\\$p>svg>foreignObject>section .csv-data td,div#\\:\\$p>svg>foreignObject>section .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}div#\\:\\$p>svg>foreignObject>section .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}div#\\:\\$p>svg>foreignObject>section .csv-data tr{border-top:0}div#\\:\\$p>svg>foreignObject>section .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}div#\\:\\$p>svg>foreignObject>section [data-footnote-ref]:before{content:\"[\"}div#\\:\\$p>svg>foreignObject>section [data-footnote-ref]:after{content:\"]\"}div#\\:\\$p>svg>foreignObject>section .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}div#\\:\\$p>svg>foreignObject>section div#\\:\\$p>svg>foreignObject>section section.footnotes{--marpit-root-font-size:12px}div#\\:\\$p>svg>foreignObject>section .footnotes ol{padding-left:16px}div#\\:\\$p>svg>foreignObject>section .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}div#\\:\\$p>svg>foreignObject>section .footnotes li{position:relative}div#\\:\\$p>svg>foreignObject>section .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;bottom:-8px;content:\"\";left:-24px;pointer-events:none;position:absolute;right:-8px;top:-8px}div#\\:\\$p>svg>foreignObject>section .footnotes li:target{color:var(--color-fg-default)}div#\\:\\$p>svg>foreignObject>section .footnotes .data-footnote-backref g-emoji{font-family:monospace}div#\\:\\$p>svg>foreignObject>section .pl-c{color:var(--color-prettylights-syntax-comment)}div#\\:\\$p>svg>foreignObject>section .pl-c1,div#\\:\\$p>svg>foreignObject>section .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}div#\\:\\$p>svg>foreignObject>section .pl-e,div#\\:\\$p>svg>foreignObject>section .pl-en{color:var(--color-prettylights-syntax-entity)}div#\\:\\$p>svg>foreignObject>section .pl-s .pl-s1,div#\\:\\$p>svg>foreignObject>section .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}div#\\:\\$p>svg>foreignObject>section .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}div#\\:\\$p>svg>foreignObject>section .pl-k{color:var(--color-prettylights-syntax-keyword)}div#\\:\\$p>svg>foreignObject>section .pl-pds,div#\\:\\$p>svg>foreignObject>section .pl-s,div#\\:\\$p>svg>foreignObject>section .pl-s .pl-pse .pl-s1,div#\\:\\$p>svg>foreignObject>section .pl-sr,div#\\:\\$p>svg>foreignObject>section .pl-sr .pl-cce,div#\\:\\$p>svg>foreignObject>section .pl-sr .pl-sra,div#\\:\\$p>svg>foreignObject>section .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}div#\\:\\$p>svg>foreignObject>section .pl-smw,div#\\:\\$p>svg>foreignObject>section .pl-v{color:var(--color-prettylights-syntax-variable)}div#\\:\\$p>svg>foreignObject>section .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}div#\\:\\$p>svg>foreignObject>section .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}div#\\:\\$p>svg>foreignObject>section .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}div#\\:\\$p>svg>foreignObject>section .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}div#\\:\\$p>svg>foreignObject>section .pl-ml{color:var(--color-prettylights-syntax-markup-list)}div#\\:\\$p>svg>foreignObject>section .pl-mh,div#\\:\\$p>svg>foreignObject>section .pl-mh .pl-en,div#\\:\\$p>svg>foreignObject>section .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}div#\\:\\$p>svg>foreignObject>section .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}div#\\:\\$p>svg>foreignObject>section .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}div#\\:\\$p>svg>foreignObject>section .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}div#\\:\\$p>svg>foreignObject>section .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}div#\\:\\$p>svg>foreignObject>section .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}div#\\:\\$p>svg>foreignObject>section .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}div#\\:\\$p>svg>foreignObject>section .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}div#\\:\\$p>svg>foreignObject>section .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}div#\\:\\$p>svg>foreignObject>section .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}div#\\:\\$p>svg>foreignObject>section .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}div#\\:\\$p>svg>foreignObject>section g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}div#\\:\\$p>svg>foreignObject>section g-emoji img{height:1em;width:1em}div#\\:\\$p>svg>foreignObject>section .task-list-item{list-style-type:none}div#\\:\\$p>svg>foreignObject>section .task-list-item label{font-weight:var(--base-text-weight-normal,400)}div#\\:\\$p>svg>foreignObject>section .task-list-item.enabled label{cursor:pointer}div#\\:\\$p>svg>foreignObject>section .task-list-item+.task-list-item{margin-top:4px}div#\\:\\$p>svg>foreignObject>section .task-list-item .handle{display:none}div#\\:\\$p>svg>foreignObject>section .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}div#\\:\\$p>svg>foreignObject>section .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}div#\\:\\$p>svg>foreignObject>section .contains-task-list{position:relative}div#\\:\\$p>svg>foreignObject>section .contains-task-list:focus-within .task-list-item-convert-container,div#\\:\\$p>svg>foreignObject>section .contains-task-list:hover .task-list-item-convert-container{clip:auto;display:block;height:24px;overflow:visible;width:auto}div#\\:\\$p>svg>foreignObject>section ::-webkit-calendar-picker-indicator{filter:invert(50%)}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1){color:var(--h1-color);font-size:1.6em}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1),div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2){border-bottom:none}div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2){font-size:1.3em}div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3){font-size:1.1em}div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4){font-size:1.05em}div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5){font-size:1em}div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6){font-size:.9em}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1) strong,div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2) strong,div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3) strong,div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4) strong,div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5) strong,div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6) strong{color:var(--heading-strong-color);font-weight:inherit}div#\\:\\$p>svg>foreignObject>section :is(h1,marp-h1)::part(auto-scaling),div#\\:\\$p>svg>foreignObject>section :is(h2,marp-h2)::part(auto-scaling),div#\\:\\$p>svg>foreignObject>section :is(h3,marp-h3)::part(auto-scaling),div#\\:\\$p>svg>foreignObject>section :is(h4,marp-h4)::part(auto-scaling),div#\\:\\$p>svg>foreignObject>section :is(h5,marp-h5)::part(auto-scaling),div#\\:\\$p>svg>foreignObject>section :is(h6,marp-h6)::part(auto-scaling){max-height:563px}div#\\:\\$p>svg>foreignObject>section hr{height:0;padding-top:.25em}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre){border:1px solid var(--color-border-default);line-height:1.15;overflow:visible}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre)::part(auto-scaling){max-height:529px}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs){color:var(--color-prettylights-syntax-storage-modifier-import)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-doctag),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-keyword),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta .hljs-keyword),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-template-tag),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-template-variable),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-type),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-variable.language_){color:var(--color-prettylights-syntax-keyword)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.class_),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.class_.inherited__),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-title.function_){color:var(--color-prettylights-syntax-entity)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-attr),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-attribute),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-literal),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-number),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-operator),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-attr),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-class),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-id),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-variable){color:var(--color-prettylights-syntax-constant)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-meta .hljs-string),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-regexp),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-string){color:var(--color-prettylights-syntax-string)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-built_in),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-symbol){color:var(--color-prettylights-syntax-variable)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-code),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-comment),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-formula){color:var(--color-prettylights-syntax-comment)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-name),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-quote),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-pseudo),div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-selector-tag){color:var(--color-prettylights-syntax-entity-tag)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-subst){color:var(--color-prettylights-syntax-storage-modifier-import)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-section){color:var(--color-prettylights-syntax-markup-heading);font-weight:700}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-bullet){color:var(--color-prettylights-syntax-markup-list)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-emphasis){color:var(--color-prettylights-syntax-markup-italic);font-style:italic}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-strong){color:var(--color-prettylights-syntax-markup-bold);font-weight:700}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-addition){background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}div#\\:\\$p>svg>foreignObject>section :is(pre,marp-pre) :where(.hljs-deletion){background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}div#\\:\\$p>svg>foreignObject>section footer,div#\\:\\$p>svg>foreignObject>section header{color:var(--header-footer-color);font-size:18px;left:30px;margin:0;position:absolute}div#\\:\\$p>svg>foreignObject>section header{top:21px}div#\\:\\$p>svg>foreignObject>section footer{bottom:21px}div#\\:\\$p>svg>foreignObject>section{--h1-color:#246;--header-footer-color:hsla(0,0%,40%,.75);--heading-strong-color:#48c;--paginate-color:#777;align-items:stretch;display:flex;flex-flow:column nowrap;font-size:29px;height:720px;justify-content:center;padding:78.5px;width:1280px}div#\\:\\$p>svg>foreignObject>section{--marpit-root-font-size:29px}div#\\:\\$p>svg>foreignObject>section:where(.invert){--h1-color:#cee7ff;--header-footer-color:hsla(0,0%,60%,.75);--heading-strong-color:#7bf;--paginate-color:#999}div#\\:\\$p>svg>foreignObject>section>:last-child,div#\\:\\$p>svg>foreignObject>section[data-footer]>:nth-last-child(2){margin-bottom:0}div#\\:\\$p>svg>foreignObject>section>:first-child,div#\\:\\$p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#\\:\\$p>svg>foreignObject>section:after{bottom:21px;color:var(--paginate-color);font-size:24px;padding:0;position:absolute;right:30px}div#\\:\\$p>svg>foreignObject>section:after{--marpit-root-font-size:24px}div#\\:\\$p>svg>foreignObject>section[data-color] :is(h1,marp-h1),div#\\:\\$p>svg>foreignObject>section[data-color] :is(h2,marp-h2),div#\\:\\$p>svg>foreignObject>section[data-color] :is(h3,marp-h3),div#\\:\\$p>svg>foreignObject>section[data-color] :is(h4,marp-h4),div#\\:\\$p>svg>foreignObject>section[data-color] :is(h5,marp-h5),div#\\:\\$p>svg>foreignObject>section[data-color] :is(h6,marp-h6){color:currentcolor}div#\\:\\$p>svg>foreignObject>section footer{\n \/* Unset default placing inherited from the built-in theme *\/left:auto;right:auto;top:auto;bottom:auto;\n\n \/* Place to right-bottom *\/right:50px;bottom:50px}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\\:\\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\\:\\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}<\/style><\/head><body><div class=\"bespoke-marp-osc\"><button data-bespoke-marp-osc=\"prev\" tabindex=\"-1\" title=\"Previous slide\">Previous slide<\/button><span data-bespoke-marp-osc=\"page\"><\/span><button data-bespoke-marp-osc=\"next\" tabindex=\"-1\" title=\"Next slide\">Next slide<\/button><button data-bespoke-marp-osc=\"fullscreen\" tabindex=\"-1\" title=\"Toggle fullscreen (f)\">Toggle fullscreen<\/button><button data-bespoke-marp-osc=\"presenter\" tabindex=\"-1\" title=\"Open presenter view (p)\">Open presenter view<\/button><\/div><div id=\":$p\"><svg data-marpit-svg=\"\" viewBox=\"0 0 1280 720\"><foreignObject width=\"1280\" height=\"720\"><section id=\"1\" data-class=\"invert\" lang=\"en-US\" class=\"invert\" style=\"--class:invert;\">\n<h1 id=\"harnessing-aws-bedrock--langchain-for-advanced-chatbots\">Harnessing AWS Bedrock &amp; Langchain for Advanced Chatbots<\/h1>\n<ul>\n<li>Rodrigo Moran<\/li>\n<li><a href=\"https:\/\/blog.ippon.tech\/\">Ippon Technologies<\/a><\/li>\n<\/ul>\n<\/section>\n<\/foreignObject><\/svg><svg data-marpit-svg=\"\" viewBox=\"0 0 1280 720\"><foreignObject width=\"1280\" height=\"720\"><section id=\"2\" data-marpit-fragments=\"5\" data-class=\"invert\" lang=\"en-US\" class=\"invert\" style=\"--class:invert;\">\n<h1 id=\"intro\">Intro<\/h1>\n<ul>\n<li data-marpit-fragment=\"1\">IpponGPT <img class=\"emoji\" draggable=\"false\" alt=\"\ud83e\udd16\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/1f916.svg\" data-marp-twemoji=\"\"\/><img class=\"emoji\" draggable=\"false\" alt=\"\ud83e\udd9c\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/1f99c.svg\" data-marp-twemoji=\"\"\/><\/li>\n<li data-marpit-fragment=\"2\">Leverages a serverless LLM service via AWS Bedrock (<em>Anthropic Claude<\/em>)<\/li>\n<li data-marpit-fragment=\"3\">Built using the Langchain framework to combine various components (DB, memory, routers, etc)<\/li>\n<li data-marpit-fragment=\"4\">Utilizes AWS OpenSearch Serverless as a Vector DB<\/li>\n<li data-marpit-fragment=\"5\">Relies on the Slack Bolt framework for the Slack integration via Websockets<\/li>\n<\/ul>\n<\/section>\n<\/foreignObject><\/svg><svg data-marpit-svg=\"\" viewBox=\"0 0 1280 720\"><foreignObject width=\"1280\" height=\"720\"><section id=\"3\" data-class=\"invert\" lang=\"en-US\" class=\"invert\" style=\"--class:invert;\">\n<h1 id=\"agenda\">Agenda<\/h1>\n<ol>\n<li>Overview of Bedrock <img class=\"emoji\" draggable=\"false\" alt=\"\ud83d\udecf\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/1f6cf.svg\" data-marp-twemoji=\"\"\/><img class=\"emoji\" draggable=\"false\" alt=\"\ud83e\udea8\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/1faa8.svg\" data-marp-twemoji=\"\"\/><\/li>\n<li>Embeddings &amp; Vector Databases <img class=\"emoji\" draggable=\"false\" alt=\"\ud83d\udef0\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/1f6f0.svg\" data-marp-twemoji=\"\"\/><img class=\"emoji\" draggable=\"false\" alt=\"\ud83d\udcd0\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/1f4d0.svg\" data-marp-twemoji=\"\"\/><\/li>\n<li>Overview of Langchain <img class=\"emoji\" draggable=\"false\" alt=\"\u26d3\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/jdecked\/twemoji@14.1.2\/assets\/svg\/26d3.svg\" data-marp-twemoji=\"\"\/><\/li>\n<li>Demo<\/li>\n<\/ol>\n<\/section>\n<\/foreignObject><\/svg><svg data-marpit-svg=\"\" viewBox=\"0 0 1280 720\"><foreignObject width=\"1280\" height=\"720\"><section id=\"4\" data-marpit-fragments=\"3\" data-class=\"invert\" lang=\"en-US\" class=\"invert\" style=\"--class:invert;\">\n<h1 id=\"what-is-aws-bedrock\">What is AWS Bedrock<\/h1>\n<ul>\n<li data-marpit-fragment=\"1\">Managed LLM service focused on ease of use<\/li>\n<li data-marpit-fragment=\"2\">Provides access many Foundational Models (<em>Claude, Command, Mistral, Llama<\/em>)<\/li>\n<li data-marpit-fragment=\"3\">Tightly integrated with other services (Knowledge Bases for Bedrock)<\/li>\n<\/ul>\n<\/section>\n<\/foreignObject><\/svg><svg data-marpit-svg=\"\" viewBox=\"0 0 1280 720\"><foreignObject width=\"1280\" height=\"720\"><section id=\"5\" data-class=\"invert\" lang=\"en-US\" class=\"invert\" style=\"--class:invert;\">\n<h1 id=\"finetunning-vs-knowledge-base\">Finetunning vs Knowledge Base<\/h1>\n<h2 id=\"finetunning-llm---change-llm-behaviour\">Finetunning LLM -&gt; Change LLM behaviour<\/h2>\n<h2 id=\"knowledge-base---gain-domain-knowledge\">Knowledge Base -&gt; Gain domain knowledge<\/h2>\n<\/section>\n<\/foreignObject><\/svg><svg data-marpit-svg=\"\" viewBox=\"0 0 1280 720\"><foreignObject width=\"1280\" height=\"720\"><section id=\"6\" data-marpit-fragments=\"2\" data-class=\"invert\" lang=\"en-US\" class=\"invert\" style=\"--class:invert;\">\n<h1 id=\"retrieval-augmented-generation-rag\">Retrieval Augmented Generation (RAG)<\/h1>\n<p>This is the usecase Knowledge Bases for Bedrock is tyring to solve<br \/>\nThere are two main processes:<\/p>"},{"title":"Email Alerts from Snowflake","link":"https:\/\/rigomoran.com\/email-alerts-sf\/","pubDate":"Wed, 25 Oct 2023 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/email-alerts-sf\/","description":"testing snowflake alerts"},{"title":"Create Table Schema From File","link":"https:\/\/rigomoran.com\/auto-table-schema\/","pubDate":"Sat, 21 Oct 2023 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/auto-table-schema\/","description":"Infer table schema from file"},{"title":"Manage Git Configs","link":"https:\/\/rigomoran.com\/manage-git-configs\/","pubDate":"Wed, 11 Oct 2023 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/manage-git-configs\/","description":"<p>There&rsquo;s a better way to manage all your Git profiles. By adding:<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-shell\" data-lang=\"shell\"><span class=\"line\"><span class=\"cl\"><span class=\"o\">[<\/span>includeIf <span class=\"s2\">&#34;gitdir:\/path\/to\/group\/&#34;<\/span><span class=\"o\">]<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nv\">path<\/span> <span class=\"o\">=<\/span> \/path\/to\/foo.inc\n<\/span><\/span><\/code><\/pre><\/div><p>to your main git config you can conditionally include config options from another source. This essentially enables having multiple git configs for each git identity.<\/p>\n<p>For example, say you have 3 separate Git profiles for personal, clientA, and clientB. You would then need 3 <code>.gitconfig<\/code> files, like this:<\/p>\n<ul>\n<li>~\/.gitconfig ~&gt; main config for personal<\/li>\n<li>~\/.gitconfig-clientA ~&gt; config for clientA<\/li>\n<li>~\/.gitconfig-clientB ~&gt; config for clientB<\/li>\n<\/ul>\n<p>Your main <code>.gitconfig<\/code> doesn&rsquo;t change it will act as the base for the others. The other config files will only contain the changes you want to override. To override the email I would add this:<\/p>"},{"title":"Move lines around in Neovim","link":"https:\/\/rigomoran.com\/move-lines-in-nvim\/","pubDate":"Sun, 05 Feb 2023 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/move-lines-in-nvim\/","description":"How to set up keymaps to move lines up or down in neovim"},{"title":"Use AWS CLI SSO Login","link":"https:\/\/rigomoran.com\/login-using-aws-sso\/","pubDate":"Mon, 19 Sep 2022 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/login-using-aws-sso\/","description":"this is a sample summary, This creates the NamedProfile if it did not already exist. An entry should be added to your"},{"title":"No-Framework Approach to Building a CLI with Go","link":"https:\/\/rigomoran.com\/no-framework-go-cli\/","pubDate":"Wed, 01 Dec 2021 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/no-framework-go-cli\/","description":"In this guide, we will be building a CLI tool from scratch. No fancy frameworks or libraries instead, we are building our own"},{"title":"Projects","link":"https:\/\/rigomoran.com\/projects\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/rigomoran.com\/projects\/","description":"<h2 id=\"projects\">Projects<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/phantompunk\/gupi\"><strong>Gupi<\/strong><\/a> is a template manager and renderer written in Go.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/phantompunk\/stencil\"><strong>Stencil<\/strong><\/a> a Figlet Font renderer and TUI written in Go.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/phantompunk\/dotfiles\"><strong>Dotfiles<\/strong><\/a> my personal config settings for living and working in the terminal.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/lemma-io\/vivify\"><strong>Vivify<\/strong><\/a> an Android alarm clock leveraging Spotify&rsquo;s SDK before it was cool. Unlisted.<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"jobs\">Jobs<\/h2>\n<p>I currently work at <strong><a href=\"https:\/\/ipponusa.com\/\">Ippon Technologies<\/a><\/strong> a boutique global consulting firm delivering cloud, data, and software engineering solutions. During my time I\u2019ve worked on several client projects in varying industries, capacities, and tech stacks.<\/p>"}]}}