<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>ScottWillsey</title><description>macOS nerd, old school computer guy</description><link>https://scottwillsey.com/</link><item><title>Astro RSS Compiled Content Revisited</title><link>https://scottwillsey.com/astro-astro-rss-compiled-content-revisited</link><guid isPermaLink="true">https://scottwillsey.com/astro-astro-rss-compiled-content-revisited</guid><description>In which I learn that I&apos;m doing things wrong, and I start trying to do them right again.</description><pubDate>Sat, 04 Apr 2026 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;In the past I wrote about &lt;a href=&quot;https://scottwillsey.com/astro-rss-compiledcontent/&quot;&gt;full-text RSS in Astro&lt;/a&gt;, and using sanitize-html on the blog post content to escape and filter html tags. This is or was the &lt;a href=&quot;https://docs.astro.build/en/recipes/rss/&quot;&gt;recommended procedure when creating full-text RSS feeds according to Astro’s documentation on RSS feeds&lt;/a&gt;, and worked fine until recently.&lt;/p&gt;
&lt;p&gt;At some point, sanitize-html started breaking when &lt;a href=&quot;https://feedic.com/htmlparser2/&quot;&gt;htmlparser2&lt;/a&gt; was updated (and sanitize-html apparently wasn’t). I started getting the following compilation error:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SanitizeErrorMessage-08223da8-ee82-4562-8c91-390fdfeae6f4.jpg&quot;&gt;&lt;img alt=&quot;SanitizeErrorMessage&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;306&quot; src=&quot;https://scottwillsey.com/_astro/SanitizeErrorMessage-08223da8-ee82-4562-8c91-390fdfeae6f4.DbsVUAH9_ZyTvrs.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My temporary solution was to pin htmlparser2 to version 8, which I didn’t love, especially since I have multiple Astro sites, and since it would be hard to know when an update would fix the issue.&lt;/p&gt;
&lt;p&gt;However, after this problem persisted for awhile, I started wondering what was going on. Surely it must be affecting other people making Astro sites too, but I didn’t see any mention of it at all in the &lt;a href=&quot;https://astro.build/chat&quot;&gt;Astro Discord&lt;/a&gt;. I &lt;a href=&quot;https://discord.com/channels/830184174198718474/1487918321906221096/1487918321906221096&quot;&gt;posted a question about it&lt;/a&gt; and got crickets until today, when a contributor named Armand responded with several helpful bits of information.&lt;/p&gt;
&lt;p&gt;First off, he mentioned that instead of sanitize-html, he himself uses &lt;a href=&quot;https://npmx.dev/package/ultrahtml&quot;&gt;ultrahtml&lt;/a&gt; to handle the html cleanup and parsing. He even provided an example of it in use for me: &lt;a href=&quot;https://github.com/delucis/astro-blog-full-text-rss/blob/latest/src/pages/rss.xml.ts&quot;&gt;astro-blog-full-text-rss/src/pages/rss.xml.ts at latest · delucis/astro-blog-full-text-rss&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;He went on to test my issue and pointed out that my code was calling the async function &lt;code&gt;post.compiledContent()&lt;/code&gt; without &lt;code&gt;await&lt;/code&gt;, and this was breaking htmlparser2 as it received a Promise object from sanitize-html, which was passing it on after receiving it from me:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;globalImageUrls&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;compiledContent&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;content: globalImageUrls(    site.url,    sanitizeHtml(post.compiledContent(), {    allowedTags: sanitizeHtml.defaults.allowedTags.concat([&amp;#x22;img&amp;#x22;]),}),&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I’m not 100% sure why this wasn’t breaking in htmlparser2 8.0 and prior, but in fact it WAS resulting in the expected content not being output at all. Instead, where the full-text content should have been for each post in the RSS feed, was an empty &lt;code&gt;&amp;#x3C;content:encoded /&gt;&lt;/code&gt; tag. So the fact that I was not awaiting the return result of the async &lt;code&gt;post.compiledContent()&lt;/code&gt; already WAS causing me issues, and I hadn’t even noticed.&lt;/p&gt;
&lt;p&gt;At any rate, by the time he informed me of how stupid I was (he didn’t phrase it that way, but I am), I’d already implemented ultrahtml and moved on.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/rss.xml.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/rss&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;experimental_AstroContainer&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;AstroContainer&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro/container&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;transform&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;walk&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ultrahtml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sanitize&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ultrahtml/transformers/sanitize&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../data/site.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;GET&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;at&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;slice&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;container&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;AstroContainer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;draft&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; []&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;rawContent&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;container&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;renderToString&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;transform&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;rawContent&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000;--2:#f89a93&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--1:#811F3F;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;!DOCTYPE html&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;walk&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;?.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;startsWith&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;?.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;startsWith&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;sanitize&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#f2878d&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;dropElements&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f2878d&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;])&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;customData&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;/summary&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;atom&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://www.w3.org/2005/Atom/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;dc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://purl.org/dc/elements/1.1/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://purl.org/rss/1.0/modules/content/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;!DOCTYPE html&gt;/, &amp;#x22;&amp;#x22;), [      async (node) =&gt; {        await walk(node, (node) =&gt; {          if (node.name === &amp;#x22;a&amp;#x22; &amp;#x26;&amp;#x26; node.attributes.href?.startsWith(&amp;#x22;/&amp;#x22;)) {            node.attributes.href = baseUrl + node.attributes.href;          }          if (node.name === &amp;#x22;img&amp;#x22; &amp;#x26;&amp;#x26; node.attributes.src?.startsWith(&amp;#x22;/&amp;#x22;)) {            node.attributes.src = baseUrl + node.attributes.src;          }        });        return node;      },      sanitize({ dropElements: [&amp;#x22;script&amp;#x22;, &amp;#x22;style&amp;#x22;] }),    ]);    items.push({      title: post.data.title,      link: &amp;#x60;${baseUrl}/${post.id}&amp;#x60;,      pubDate: rfc2822(post.data.date),      description: post.data.description,      customData: &amp;#x60;&lt;summary&gt;${post.data.description}&lt;/summary&gt;&amp;#x60;,      content,    });  }  return rss({    title: site.title,    description: site.description,    site: context.site,    xmlns: {      atom: &amp;#x22;http://www.w3.org/2005/Atom/&amp;#x22;,      dc: &amp;#x22;http://purl.org/dc/elements/1.1/&amp;#x22;,      content: &amp;#x22;http://purl.org/rss/1.0/modules/content/&amp;#x22;,    },    items,  });}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The bottom line is, if you are doing full-text RSS feeds in Astro and you do use sanitize-html or ultrahtml, don’t be like me and send a Promise to things that want the Promise’s returned object instead.&lt;/p&gt;</content:encoded><summary>In which I learn that I&apos;m doing things wrong, and I start trying to do them right again.</summary></item><item><title>2026 and the Search for Meaning</title><link>https://scottwillsey.com/2026-and-the-search-for-meaning</link><guid isPermaLink="true">https://scottwillsey.com/2026-and-the-search-for-meaning</guid><description>Figuring out what to write about in 2026</description><pubDate>Fri, 26 Dec 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;I clearly need a change in 2026. It’s obvious no one cares about any of the things I write here, which is fine. It’s also clear that I don’t care about a lot of them anymore either, which is also fine. So the question is, what should I write about on this blog that I &lt;strong&gt;will&lt;/strong&gt; continue to care about and that other people might care about too?&lt;/p&gt;
&lt;p&gt;I think 2026 is going to be the year of honesty. That doesn’t mean I’ve been dishonest, far from it. It just means that I’m going to focus on things that actually matter to me on this site, in terms of technology, rather than coming up with topics that I think I should write about for some reason. Clear as mud, right?&lt;/p&gt;
&lt;p&gt;This site has, in recent years, been solely focused on my use of technology, mainly Mac and web related. I doubt that’s going to change much. I don’t want to write about personal stuff or politics or Tonkatsu recipes here (even though writing about Tonkatsu recipes really is a winner in any situation). I think what I need to do is quit trying to write series about topics, like replacing Raycast with Spotlight, and write more one-offs. When I do write follow-up articles, I’ll try to handle it differently than making big official series of articles.&lt;/p&gt;
&lt;p&gt;In fact, I’ve quietly rid the site of lists of series and all post frontmatter referring to series. It’s gone. I don’t need it. YOU don’t need it.&lt;/p&gt;
&lt;p&gt;Maybe it’ll turn out I still have nothing of interest to say, and you still don’t care, and then I’ll just quietly quit posting and no one will notice or care. I don’t know. But mainly I think I need to figure out what I really enjoy writing about, in terms of technology,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and do that.&lt;/p&gt;
&lt;p&gt;Stay tuned… if you care to. &lt;span role=&quot;img&quot; aria-label=&quot;slightly smiling face&quot;&gt;🙂&lt;/span&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;There’s that phrase again! &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Figuring out what to write about in 2026</summary></item><item><title>Default Apps November 2025</title><link>https://scottwillsey.com/default-apps-2025</link><guid isPermaLink="true">https://scottwillsey.com/default-apps-2025</guid><description>My 2025 entrant in Robb Knight&apos;s App Defaults, inspired by Hemispheric Views 097 Duel of the Defaults.</description><pubDate>Sat, 29 Nov 2025 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I guess it’s that time of year again.&lt;/p&gt;
&lt;p&gt;This was all started when:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hemisphericviews.com/&quot;&gt;Hemispheric Views&lt;/a&gt; podcast had the &lt;a href=&quot;https://listen.hemisphericviews.com/097&quot;&gt;Duel of the Defaults!&lt;/a&gt; episode, and then &lt;a href=&quot;https://rknight.me/&quot;&gt;Robb Knight&lt;/a&gt; said, hold my &lt;a href=&quot;https://defaults.rknight.me/&quot;&gt;Hemispheric Views - App Defaults&lt;/a&gt; beer.&lt;/p&gt;
&lt;p&gt;Well, that was 2 years ago. Here’s &lt;a href=&quot;https://scottwillsey.com/default-apps-2023/&quot;&gt;my 2023 list&lt;/a&gt; that made Robb’s list, and here’s &lt;a href=&quot;https://scottwillsey.com/default-apps-2024/&quot;&gt;my 2024 list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Without further ado, here’s my 2025 list, with additions bolded and things I don’t use anymore crossed out.&lt;/p&gt;
&lt;div class=&quot;default-apps&quot;&gt;
&lt;h2 id=&quot;official-categories&quot;&gt;Official Categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;postbox&quot;&gt;📮&lt;/span&gt; Mail Server
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fastmail.com&quot;&gt;Fastmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mail.google.com/&quot;&gt;Gmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://proton.me/&quot;&gt;Proton: Privacy by default | Proton&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://outlook.live.com&quot;&gt;Outlook&lt;/a&gt; for business&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;incoming envelope&quot;&gt;📨&lt;/span&gt; Mail Client
&lt;ul&gt;
&lt;li&gt;Apple Mail&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://outlook.live.com&quot;&gt;Outlook&lt;/a&gt; for business&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;memo&quot;&gt;📝&lt;/span&gt; Notes
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian - Sharpen your thinking&lt;/a&gt; - for personal notes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.notion.so/&quot;&gt;Notion&lt;/a&gt; - &lt;strong&gt;for work sharing with a colleague only&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Apple Notes for family note sharing&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.barebones.com/products/bbedit/&quot;&gt;BBEdit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; for all my writing and podcast show notes&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://www.raycast.com&quot;&gt;Raycast&lt;/a&gt; Floating Notes Window&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;white heavy check mark&quot;&gt;✅&lt;/span&gt; To-Do
&lt;ul&gt;
&lt;li&gt;Reminders App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;camera&quot;&gt;📷&lt;/span&gt; iPhone Photo Shooting
&lt;ul&gt;
&lt;li&gt;iOS Camera&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🟦&lt;/span&gt; Photo Management
&lt;ul&gt;
&lt;li&gt;Photos App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;calendar&quot;&gt;📅&lt;/span&gt; Calendar
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.busymac.com/&quot;&gt;BusyCal - Professional Calendar App for Mac and iOS | Busy Apps by Beehive&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/dato&quot;&gt;Dato — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://calendarbridge.com/&quot;&gt;CalendarBridge&lt;/a&gt; for work calendar sync and scheduling&lt;/li&gt;
&lt;li&gt;Apple Calendar&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;open file folder&quot;&gt;📂&lt;/span&gt; Cloud File Storage
&lt;ul&gt;
&lt;li&gt;iCloud Drive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OneDrive – for business&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;open book&quot;&gt;📖&lt;/span&gt; RSS
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://reeder.app/&quot;&gt;Reeder&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://reeder.app/classic/&quot;&gt;Reeder Classic&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://readkit.app/&quot;&gt;ReadKit - Have all your reading in one place&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;👩‍🦲&lt;/span&gt; Contacts
&lt;ul&gt;
&lt;li&gt;Apple Contacts App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;globe with meridians&quot;&gt;🌐&lt;/span&gt; Browser
&lt;ul&gt;
&lt;li&gt;Safari&lt;/li&gt;
&lt;li&gt;Chrome – for web work and other business work&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;speech balloon&quot;&gt;💬&lt;/span&gt; Chat
&lt;ul&gt;
&lt;li&gt;Messages&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://signal.org/&quot;&gt;Signal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bookmark&quot;&gt;🔖&lt;/span&gt; Bookmarks
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://anybox.app/&quot;&gt;Anybox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bookmark tabs&quot;&gt;📑&lt;/span&gt; Read It Later
&lt;ul&gt;
&lt;li&gt;Safari Read Later&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;scroll&quot;&gt;📜&lt;/span&gt; Word Processing
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian - Sharpen your thinking&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; for all my writing and podcast show notes&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Pages&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Google Docs&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Word&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;chart increasing&quot;&gt;📈&lt;/span&gt; Spreadsheets
&lt;ul&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Numbers&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bar chart&quot;&gt;📊&lt;/span&gt; Presentations
&lt;ul&gt;
&lt;li&gt;Keynote&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;shopping cart&quot;&gt;🛒&lt;/span&gt; Shopping List
&lt;ul&gt;
&lt;li&gt;Reminders&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;fork and knife&quot;&gt;🍴&lt;/span&gt; Meal Planning &amp;#x26; Recipes
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mela.recipes&quot;&gt;Mela&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;money bag&quot;&gt;💰&lt;/span&gt; Budgeting and Personal Finance
&lt;ul&gt;
&lt;li&gt;Spreadsheet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;newspaper&quot;&gt;📰&lt;/span&gt; News
&lt;ul&gt;
&lt;li&gt;RSS&lt;/li&gt;
&lt;li&gt;Mastodon&lt;/li&gt;
&lt;li&gt;BlueSky&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://news.stonking.com/news&quot;&gt;News from Stonking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;musical note&quot;&gt;🎵&lt;/span&gt; Music
&lt;ul&gt;
&lt;li&gt;Apple Music&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;microphone&quot;&gt;🎤&lt;/span&gt; Podcasts
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://overcast.fm&quot;&gt;Overcast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;locked with key&quot;&gt;🔐&lt;/span&gt; Password Management
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://1password.com&quot;&gt;1Password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Passwords/Keychain&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;additional-categories&quot;&gt;Additional Categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; &lt;strong&gt;Mac Utilities&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/actions&quot;&gt;Actions — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://cleanshot.com/&quot;&gt;CleanShot X for Mac&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/dato&quot;&gt;Dato — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://redsweater.com/fastscripts/&quot;&gt;FastScripts 3&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/folder-peek&quot;&gt;Folder Peek — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://hypercritical.co/front-and-center/&quot;&gt;Front and Center&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://handmirror.app/&quot;&gt;Hand Mirror, for Mac&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://hypercritical.co/hyperspace/&quot;&gt;Hyperspace&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.obdev.at/products/littlesnitch/index.html&quot;&gt;Little Snitch — Network Monitor and Application Firewall for macOS&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/one-thing&quot;&gt;One Thing — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://orchard.5km.tech/&quot;&gt;Orchard - Bridge AI Assistants to Your Apple Ecosystem&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://pasteapp.io/&quot;&gt;Paste – The Best Clipboard Manager for Mac, iPhone, and iPad&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://rectangleapp.com/pro/&quot;&gt;Rectangle Pro&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/scratchpad&quot;&gt;Scratchpad — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/shortcutie&quot;&gt;Shortcutie — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/supercharge&quot;&gt;Supercharge — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://hypercritical.co/switchglass/&quot;&gt;SwitchGlass&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://sindresorhus.com/system-color-picker&quot;&gt;System Color Picker — Sindre Sorhus&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/&quot;&gt;Tailscale · Best VPN Service for Secure Networks&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tripmode.ch/&quot;&gt;TripMode - Save data, browse faster&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🧑&lt;/span&gt;‍&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; Programming &amp;#x26; Text Manipulation
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.barebones.com/products/bbedit/&quot;&gt;BBEdit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Xcode&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.claude.com/product/claude-code&quot;&gt;Claude Code&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; Terminal
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://ghostty.org/&quot;&gt;Ghostty&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://www.warp.dev&quot;&gt;Warp&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;camera with flash&quot;&gt;📸&lt;/span&gt; Photo Editing
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.dxo.com/dxo-photolab/&quot;&gt;DxO PhotoLab 9: RAW photo editing at its finest - DxO&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.dxo.com/dxo-viewpoint/&quot;&gt;DxO ViewPoint 5: Control geometry, shape, and perspective - DxO&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://nikcollection.dxo.com/&quot;&gt;Nik Collection 8: The world’s favorite photography plugins - Nik Collection by DxO&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.pixelmator.com/pro/&quot;&gt;Pixelmator Pro&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://affinity.serif.com/en-us/photo/&quot;&gt;Affinity Photo 2&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flyingmeat.com/acorn/&quot;&gt;Acorn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;large blue diamond&quot;&gt;🔷&lt;/span&gt; Vector Graphics
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://affinity.serif.com/en-us/designer/&quot;&gt;Affinity Designer 2&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🧠&lt;/span&gt; AI
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://www.raycast.com/pro&quot;&gt;Raycast AI&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;&lt;a href=&quot;https://copilot.github.com&quot;&gt;GitHub Copilot&lt;/a&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://claude.ai/new&quot;&gt;Claude&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.claude.com/product/claude-code&quot;&gt;Claude Code&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://chatgpt.com/&quot;&gt;ChatGPT&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://orchard.5km.tech/&quot;&gt;Orchard - Bridge AI Assistants to Your Apple Ecosystem&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded><summary>My 2025 entrant in Robb Knight&apos;s App Defaults, inspired by Hemispheric Views 097 Duel of the Defaults.</summary></item><item><title>New Face!</title><link>https://scottwillsey.com/new-face</link><guid isPermaLink="true">https://scottwillsey.com/new-face</guid><description>A new site look with some interesting changes!</description><pubDate>Wed, 19 Nov 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;Look, a new face! No, not mine, unfortunately for those who know me in person. The SITE HAS A NEW FACE!! It’s new. It’s all new. Or as &lt;a href=&quot;https://infosec.exchange/@nikolaidis&quot;&gt;Peter&lt;/a&gt; would say, “It’s the same. Exactly the same.”&lt;/p&gt;
&lt;p&gt;It is much the same, but huge chunks of the layout have been reworked, the fonts are different, the colors are different, and I like it much better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SwHomeLight-A5EC5CA2-7151-4239-811C-7D2CC81F662C.jpg&quot;&gt;&lt;img alt=&quot;Redesigned Home Page (Light)&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1306&quot; src=&quot;https://scottwillsey.com/_astro/SwHomeLight-A5EC5CA2-7151-4239-811C-7D2CC81F662C.BoCXj5-U_ZNan83.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SwBlogPost-A5EC5CA2-7151-4239-811C-7D2CC81F662C.jpg&quot;&gt;&lt;img alt=&quot;Redesigned Blog Post View&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1464&quot; src=&quot;https://scottwillsey.com/_astro/SwBlogPost-A5EC5CA2-7151-4239-811C-7D2CC81F662C.biimYQqz_1TkAkp.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Below are some of the highlights.&lt;/p&gt;
&lt;h2 id=&quot;tailwind-css&quot;&gt;Tailwind CSS&lt;/h2&gt;
&lt;p&gt;I spent a long time hating &lt;a href=&quot;https://tailwindcss.com&quot;&gt;Tailwind CSS&lt;/a&gt; just for existing. It was one of those irrational tech biases and I kind of knew it. I didn’t know how just how much it was irrational though, until I took an example photo gallery that used tailwind and modified it for my &lt;a href=&quot;https://photos.scottwillsey.com&quot;&gt;Photos&lt;/a&gt; site.&lt;/p&gt;
&lt;p&gt;What. A revelation.&lt;/p&gt;
&lt;p&gt;Tailwind is nice. It’s so much easier to fix responsive layout issues, tweak things quickly, not get lost in huge global css files (although I still do have more in global.css than I expected).&lt;/p&gt;
&lt;h2 id=&quot;sidebar&quot;&gt;Sidebar&lt;/h2&gt;
&lt;p&gt;I went from a single column view on all pages to having a sidebar again. The sidebar is more useful this time, including search and several good links, and it flows to the bottom of the page in responsive layout views. Along with this, I went to a wider max-width for the page since, let’s face it, we who care about our sanity and enjoyment of life all have high resolution monitors.&lt;/p&gt;
&lt;h2 id=&quot;typography&quot;&gt;Typography&lt;/h2&gt;
&lt;p&gt;I’m using &lt;a href=&quot;https://simplebits.shop/products/cartridge&quot;&gt;SimpleBits Cartridge font&lt;/a&gt; for my headers, &lt;a href=&quot;https://fonts.google.com/specimen/Mochiy+Pop+One&quot;&gt;Mochiy Pop One&lt;/a&gt; for Japanese, and &lt;a href=&quot;https://www.brailleinstitute.org/freefont/&quot;&gt;Atkinson Hyperlegible Font&lt;/a&gt; for body text. I really like Hyperlegible – it makes for a super clean look and a comfortable reading experience.&lt;/p&gt;
&lt;p&gt;Speaking of typography, I got rid of the icons-only site menu. For one thing, the icons weren’t cohesive and I wound up simply not liking their look very much. For another thing, they do require work on the part of the visitor to decipher them, and that’s no fun. Now I use icons much more sparingly, and only as a visual garnish – no thinking required.&lt;/p&gt;
&lt;h2 id=&quot;enjoy&quot;&gt;Enjoy&lt;/h2&gt;
&lt;p&gt;I hope you enjoy the look. I really enjoyed working on it. I am not a designer by any stretch, but I’m also an indieweb advocate and participant, and I think part of the charm of the indieweb is the non-corporate look of people’s personal sites. Long live the silly and unprofessional!&lt;/p&gt;</content:encoded><summary>A new site look with some interesting changes!</summary></item><item><title>Spotomation, Part 3 – Snippety Snippets</title><link>https://scottwillsey.com/spotomation-part-3</link><guid isPermaLink="true">https://scottwillsey.com/spotomation-part-3</guid><description>Replacing Raycast inherently means finding a really good alternative snippet and text expander app. Here&apos;s mine.</description><pubDate>Sat, 01 Nov 2025 08:10:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#the-goal--replacing-raycast-with-spotlight-and-companion-utilities&quot;&gt;The Goal – Replacing Raycast with Spotlight and Companion Utilities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#raycast-snippets&quot;&gt;Raycast Snippets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#snippety-for-mac-and-ios&quot;&gt;Snippety for Mac and iOS&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#basic-ui&quot;&gt;Basic UI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#snippet-use&quot;&gt;Snippet Use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#scripts&quot;&gt;Scripts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-goal--replacing-raycast-with-spotlight-and-companion-utilities&quot;&gt;The Goal – Replacing Raycast with Spotlight and Companion Utilities&lt;/h2&gt;
&lt;p&gt;In Part 1 of this series on replacing Raycast with Spotlight, I explained that macOS Tahoe’s greatly enhanced Spotlight led me to replace Raycast with Spotlight plus a few additional apps and utilities. Raycast purists might be shouting already, thinking I’ve lost both my mind and the challenge, since this approach requires running more apps than sticking with Raycast.&lt;/p&gt;
&lt;p&gt;Fair enough. But should I care? More important than having everything in one giant app is the user experience and the ultimate results. With that in mind, I will tackle this journey one use case at a time, comparing what I used under Raycast with what I use now for the specific need. This time, we’re tackling Snippets.&lt;/p&gt;
&lt;h2 id=&quot;raycast-snippets&quot;&gt;Raycast Snippets&lt;/h2&gt;
&lt;p&gt;I’m not going to lie, I wish Raycast would decide what they want to call their &lt;a href=&quot;https://www.raycast.com/core-features/snippets&quot;&gt;Text Expander: Snippet Management for Mac&lt;/a&gt; feature. Usually it’s referred to as “Snippets”, but on their website, they call it “Text Expander Snippet Management for Mac”, “Text Expander Snippet Extension”, and just plain “Snippets”.&lt;/p&gt;
&lt;p&gt;I’m calling it Snippets. Screw those guys and their inability to pick one. &lt;span role=&quot;img&quot; aria-label=&quot;smiling face with open mouth &amp;#x26; smiling eyes&quot;&gt;😄&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Basically, Snippets are what they sound like: stored snippets of text. You can look up snippets in Raycast itself, or trigger them inline in your document by using keywords you can specify per snippet.&lt;/p&gt;
&lt;p&gt;Raycast Snippets is really nice in the sense that it’s built into Raycast. They have a couple nice &lt;a href=&quot;https://www.youtube.com/watch?v=gSbZjxgl1Qc&quot;&gt;tutorials on YouTube&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=_P1b00n12PU&quot;&gt;for using the feature&lt;/a&gt;, focusing on the ability to trigger them inline without having to open Raycast at all (just like a proper, uh, Text Expander tool.)&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Snippets in Raycast has some very nice features. &lt;a href=&quot;https://manual.raycast.com/dynamic-placeholders&quot;&gt;Dynamic Placeholders&lt;/a&gt; are quite versatile and very powerful once you’ve thought through some use cases. They’re great for inserting the current date, placing the cursor wherever you want in the pasted text in the target document, or grabbing selected text from the foremost app and putting that inline in the snippet output. You can even include a snippet inside another snippet.&lt;/p&gt;
&lt;p&gt;Thanks to its feature set, I figured that replacing Raycast Snippets would not be easy. Fortunately, someone else needed advanced snippets too, and they knew how to program.&lt;/p&gt;
&lt;h2 id=&quot;snippety-for-mac-and-ios&quot;&gt;Snippety for Mac and iOS&lt;/h2&gt;
&lt;p&gt;After looking at a few other options I won’t list here, I stumbled across an app I’d never heard of (and chances are you haven’t either). It’s called &lt;a href=&quot;https://snippety.app/&quot;&gt;Snippety - Productivity App for macOS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Snippety is powerful. It can do scripts. It can do inline text expansion. It can do automation-based text expansions. And it can do collaboration, with nothing stored anywhere except in iCloud.&lt;/p&gt;
&lt;h3 id=&quot;basic-ui&quot;&gt;Basic UI&lt;/h3&gt;
&lt;p&gt;Snippety operates on the “appear by triggering a keyboard shortcut” method in its most basic form. ⇧⌘␣ (Shift-Command-Space) pops Snippety open to show its various folders and snippets.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SnippetyUI-267a5da2-7878-4546-b20e-cfac34228d2f.jpg&quot;&gt;&lt;img alt=&quot;Snippety UI&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1512&quot; src=&quot;https://scottwillsey.com/_astro/SnippetyUI-267a5da2-7878-4546-b20e-cfac34228d2f.DdcsnCjm_ZvYkkT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The folders on the left are optional categorization folders that you can create, delete, and edit. You can narrow a snippet search by selecting a folder to only return matching results from that folder. You can also use ⌘-1 through ⌘-9 to choose any of the first nine of them.&lt;/p&gt;
&lt;h3 id=&quot;snippet-use&quot;&gt;Snippet Use&lt;/h3&gt;
&lt;p&gt;Once you’ve found the snippet you want, you can highlight it and hit return and it will enter the snippet wherever the cursor is on whatever app you were using when you triggered Snippety to open.&lt;/p&gt;
&lt;p&gt;Popping Snippety open and inserting things this way is great, but you can also use it as a text expander. Snippety lets you set a key for any snippet, which is a great way to search for them in the Snippety UI, but also works as a text expansion trigger when combined with whatever character you have set as the text expansion trigger in Snippety Settings.&lt;/p&gt;
&lt;p&gt;Below you can see that I have a date snippet called Date YYYYMMDD which generates a datestamp for me with today’s date in the year month date format like this: 20251101. That’s 2025, month 11, day 1 (it is indeed the 1st of November, 2025, as I write this.) You can also see that I have a key set for it which is the word “dates” (standing for date short).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Dates-267a5da2-7878-4546-b20e-cfac34228d2f.jpg&quot;&gt;&lt;img alt=&quot;Dates Snippet&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;954&quot; src=&quot;https://scottwillsey.com/_astro/Dates-267a5da2-7878-4546-b20e-cfac34228d2f.DdKMxwe0_ZqyFhr.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Because I have my Snippet Expander Trigger character set to be a preceding ”!” character, now whenever I type the string “!dates”, it expands out into today’s date written as YYYYMMDD. I used it above to show the output of today’s date written this way, which is 20251101. There, I just used it again!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SnippetyExpanderTrigger-267a5da2-7878-4546-b20e-cfac34228d2f.jpg&quot;&gt;&lt;img alt=&quot;Text Expansion Trigger Setting&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1212&quot; src=&quot;https://scottwillsey.com/_astro/SnippetyExpanderTrigger-267a5da2-7878-4546-b20e-cfac34228d2f.DZ53yEDR_1xD2u2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;scripts&quot;&gt;Scripts&lt;/h3&gt;
&lt;p&gt;Ok, this is all great, but so far none of this does anything Raycast Snippets can’t do. That wouldn’t bother me, because the goal here is to replace Raycast with Spotlight and any macOS utility apps needed to give me equivalent capabilities. But in fact Snippety does go further.&lt;/p&gt;
&lt;p&gt;In Snippety, you can run command line commands that run the command and give you the output as the snippet. For example, I have a snippet called “Transform URL to exceptions RegEx” which I use when I want to take a URL I’m given by someone and convert it into a specific regular expression that I put in a firewall block exceptions list. You can see the big long command in the snippet below:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/TransU2Reg-267a5da2-7878-4546-b20e-cfac34228d2f.jpg&quot;&gt;&lt;img alt=&quot;Dates Snippet&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1094&quot; src=&quot;https://scottwillsey.com/_astro/TransU2Reg-267a5da2-7878-4546-b20e-cfac34228d2f.CEQbBWxZ_I2Fs2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;{@script|Selection|echo %@ \| perl -pe &apos;s\|^https?://(?:[A-Za-z0-9.-]+\.)?([A-Za-z0-9-]+)\.([A-Za-z]+)/?.*$\|^https?://([A-Za-z0-9.-]*\\.)?$1\\.$2\|&apos;|YES@}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{@script|Selection|echo %@ \| perl -pe &amp;#x27;s\|^https?://(?:[A-Za-z0-9.-]+\.)?([A-Za-z0-9-]+)\.([A-Za-z]+)/?.*$\|^https?://([A-Za-z0-9.-]*\\.)?$1\\.$2\|&amp;#x27;|YES@}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Basically it takes whatever text you have selected in the foreground app and runs a Perl one-liner on it. The one-liner is a substitute expression. It takes the input url in the form &lt;code&gt;https://scottwillsey.com&lt;/code&gt; and outputs the string &lt;code&gt;^https?://([A-Za-z0-9.-]*\.)?scottwillsey\.com&lt;/code&gt;, which is a regular expression I can use to add to a specific firewall’s exceptions list. Since I think everyone should have the ability to read scottwillsey.com all the time, I think this is a good thing to do.&lt;/p&gt;
&lt;p&gt;Because it relies on having an existing text selection highlighted, I can’t use a text expansion, but I can select my URL, hit ⇧⌘␣ (Shift-Command-Space) to open Snippety, start typing the &lt;code&gt;Transu2Reg&lt;/code&gt; key, and hit return on the snippet to transform my URL into the regular expression I want.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There are some idiosyncrasies to the Snippety UI that are minor annoyances to me, such as the fact that the UI isn’t really meant to remain open but still needs to be used to configure settings and manage snippets and folders, but those are minor. Overall I find Snippety to be an upgrade on Raycast’s Snippets feature, even if it does take a slightly different way of thinking to make best use of it.&lt;/p&gt;
&lt;p&gt;Check it out at &lt;a href=&quot;https://snippety.app&quot;&gt;https://snippety.app&lt;/a&gt; if you’re in the market for a good snippet and text expander app, whether you’re coming from Raycast or not. I think you’ll wonder why no one is really talking about this app.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Total sideshow here, but holy cow how far the original has TextExpander fallen. I’m not even going to do it the favor of linking to it. You can take the time if you’re really that bored. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Replacing Raycast inherently means finding a really good alternative snippet and text expander app. Here&apos;s mine.</summary></item><item><title>Spotomation, Part 2 – Replacing AI</title><link>https://scottwillsey.com/spotomation-part-2</link><guid isPermaLink="true">https://scottwillsey.com/spotomation-part-2</guid><description>macOS 26 brings with it a more powerful Spotlight, and with it, a challenge – can it replace Raycast, specifically Raycast AI?</description><pubDate>Thu, 18 Sep 2025 08:10:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#the-goal--replacing-raycast-with-spotlight-and-companion-utilities&quot;&gt;The Goal – Replacing Raycast with Spotlight and Companion Utilities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#raycast-ai&quot;&gt;Raycast AI&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#models&quot;&gt;Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#integration&quot;&gt;Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#extensions-and-mcp&quot;&gt;Extensions and MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#caveats&quot;&gt;Caveats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#non-raycast-ai-options&quot;&gt;Non-Raycast AI Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#the-future&quot;&gt;The Future&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;Conclusion&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#additional-reading&quot;&gt;Additional Reading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-goal--replacing-raycast-with-spotlight-and-companion-utilities&quot;&gt;The Goal – Replacing Raycast with Spotlight and Companion Utilities&lt;/h2&gt;
&lt;p&gt;In Part 1 of this series on replacing Raycast with Spotlight, I explained that macOS Tahoe’s greatly enhanced Spotlight led me to replace Raycast with Spotlight plus a few additional apps and utilities. Raycast purists might be shouting already, thinking I’ve lost both my mind and the challenge, since this approach requires more apps than sticking with Raycast.&lt;/p&gt;
&lt;p&gt;Fair enough. But should I care? More important than having everything in one giant app is the user experience and the ultimate results. With that in mind, I will tackle this journey one use case at a time, comparing what I used under Raycast with what I use now for the specific need. First up: AI. Right up front I’ll just say that if AI is your main concern, I’m not going to convince you to get rid of Raycast with anything I say here.&lt;/p&gt;
&lt;h2 id=&quot;raycast-ai&quot;&gt;Raycast AI&lt;/h2&gt;
&lt;h3 id=&quot;models&quot;&gt;Models&lt;/h3&gt;
&lt;p&gt;I already know that Raycast AI alone is a factor that will deter many from leaving Raycast in favor of Spotlight. Raycast emphasizes AI integration, whereas Spotlight has zero AI integration whatsoever. If you decide not to use Raycast in favor of Spotlight, you will be looking for AI app and integration options. There are both advantages and disadvantages to this, which I will cover later.&lt;/p&gt;
&lt;p&gt;With the free Raycast plan, you get 50 AI messages per month. The $8/mo Raycast Pro unlocks many more models from various providers and increases token quotas (though I can’t tell what the exact limit is). There’s also an Advanced AI add-on to Raycast Pro for another $8/mo (totaling $16/mo), which provides access to the best recent models from multiple providers.&lt;/p&gt;
&lt;p&gt;If you want to use a wide variety of models from multiple vendors, you’re unlikely to switch to Spotlight plus a separate AI solution, since you’d have to subscribe to multiple model providers or APIs. There’s also value in spending $192 per year to access that breadth of models and capabilities.&lt;/p&gt;
&lt;h3 id=&quot;integration&quot;&gt;Integration&lt;/h3&gt;
&lt;p&gt;Beyond model access, Raycast integrates AI right into its own UI. Quick AI can be invoked inline in Raycast, enabling rapid questions and answers. QuickAI can search the web, and you can also save and execute chat presets.&lt;/p&gt;
&lt;p&gt;Furthermore, Raycast has an AI chat app that looks a lot like the ChatGPT or Claude Mac apps. It has chat history, model selection, and you can even switch models in the middle of a chat. It’s very well done.&lt;/p&gt;
&lt;h3 id=&quot;extensions-and-mcp&quot;&gt;Extensions and MCP&lt;/h3&gt;
&lt;p&gt;One area where third-party LLM integrators have often been ahead of companies like OpenAI and Anthropic is in extensions, MCP, and other methods for enabling integrations with services and local apps and utilities. Raycast is no exception.&lt;/p&gt;
&lt;p&gt;Raycast lets you use extensions that are updated to work with AI simply by @ mentioning them. &lt;a href=&quot;https://www.raycast.com/core-features/ai&quot;&gt;Their AI page&lt;/a&gt; provides an example: stating “@calendar block my day from 4 pm” to have Raycast AI update my calendar using the Raycast calendar extension. That’s very powerful, and presumably the number of Raycast extensions configured to work with Raycast AI will continue to grow.&lt;/p&gt;
&lt;p&gt;Even more powerful is &lt;a href=&quot;https://manual.raycast.com/model-context-protocol&quot;&gt;Raycast’s integration with MCP servers&lt;/a&gt;. Honestly, just typing this out makes me realize how big of a loss it would be to many people to have to dump Raycast AI. While there are likely hiccups with its MCP integration, MCP in general is fiddly, so it’s no worse than setting up MCP with Claude, and much better than setting it up with a ChatGPT account. The current state of Raycast AI is a big win for Raycast.&lt;/p&gt;
&lt;h3 id=&quot;caveats&quot;&gt;Caveats&lt;/h3&gt;
&lt;p&gt;There are some aspects of Raycast AI that I’m not a huge fan of. One stems from my aversion to constantly managing models. Some people enjoy choosing a different model for every task and comparing them ad nauseam. I don’t. I just want to get stuff done, and if a model can’t do the things I actually use LLMs for, I won’t use it.&lt;/p&gt;
&lt;p&gt;With Raycast AI presets and AI actions, you have to decide in advance which model will be used, and then you have to manually change the model for each preset and action whenever new models come out or you change your mind. It’s mind-bogglingly tedious and painful.&lt;/p&gt;
&lt;p&gt;Here’s a screenshot of an AI command I was setting up last year. You can see that model choice is a setting, and that setting persists until YOU change it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastAIEdit-03DCE29C-D381-47E5-AB66-FC76FF3F150A.jpg&quot;&gt;&lt;img alt=&quot;Raycast AI command settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1508&quot; src=&quot;https://scottwillsey.com/_astro/RaycastAIEdit-03DCE29C-D381-47E5-AB66-FC76FF3F150A.fYJBYdkd_ZjqXqH.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don’t want to live having to manually manage and update AI models for a thousand actions, and I don’t think most other people actually do either.&lt;/p&gt;
&lt;p&gt;The end result is that although Raycast AI is easier and more full-featured to get into initially than a roll-your-own solution or using Claude or ChatGPT, it also requires a substantial amount of maintenance and organization unless you just use it for basic AI Quick Chat and AI chat sessions. Raycast definitely needs to fix this, because they’ve created a management nightmare for AI power users.&lt;/p&gt;
&lt;h2 id=&quot;non-raycast-ai-options&quot;&gt;Non-Raycast AI Options&lt;/h2&gt;
&lt;p&gt;If you’re going to ditch Raycast in favor of Spotlight, it’s very simple: you’ll have to find your own alternate AI tools. If you want access to tons of models deeply integrated with your tools and workflows, you’re unlikely to find something you like as well. It’s a simple test: if you want the most models possible combined with as many easy-to-use integrations as possible, keep Raycast.&lt;/p&gt;
&lt;p&gt;If you’re like me and you want one or two of the best models with the fewest hallucinations, the ability to get CLI and chat tools in one plan, and as many integrations as possible, you can get by with a Claude.ai account, or possibly a ChatGPT account with occasional OpenAI API use.&lt;/p&gt;
&lt;p&gt;As of this writing, the GPT-5 models (including the new GPT-5 Codex model) are much better and less annoying than Anthropic Claude counterparts. This is unfortunate, because Claude is a better product, even if it isn’t as good a LLM anymore. MCP integrations work the way you’d want them to, unlike the macOS ChatGPT app, which requires remote-hosted MCP servers only. Fortunately, OpenAI’s Codex CLI app doesn’t have this limitation on which MCP servers it can use, but that isn’t helpful for most ChatGPT sessions.&lt;/p&gt;
&lt;p&gt;Right now I have both Claude and ChatGPT accounts, as well as an OpenAI API account that I make very little use of. The truth is, I haven’t really used Claude recently given the much better results I get from the current GPT-5 models.&lt;/p&gt;
&lt;p&gt;If you’re wondering how I live without all the integrations provided by Raycast MCP and AI Extension support, the only reason it’s possible is that I never relied heavily on the extensions available when I installed macOS Tahoe and switched to Spotlight, and I’m pretty sure MCP servers weren’t supported in Raycast at that point. So I’m not really losing a lot in terms of AI use compared to when I was using Raycast. But this may not be the case for many Raycast users.&lt;/p&gt;
&lt;h2 id=&quot;the-future&quot;&gt;The Future&lt;/h2&gt;
&lt;p&gt;I think the future will bring more options for products and services that provide access to many models and workflow integrations, including improvements directly from companies like OpenAI and Anthropic. We are in the very early days of bringing LLMs fully into our operating environments, and a lot will change in the coming months and years.&lt;/p&gt;
&lt;p&gt;One interesting Mac-related option that is still in alpha or early beta, and which I therefore haven’t been able to try yet, is Sky. Federico Viticci of MacStories has an article on its early state titled &lt;a href=&quot;https://www.macstories.net/stories/sky-for-mac-preview/&quot;&gt;From the Creators of Shortcuts, Sky Extends AI Integration and Automation to Your Entire Mac&lt;/a&gt;. It’s worth a read to spark the imagination about the possibilities.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For most people, the AI support in Raycast is going to beat the “bring your own” approach required by people not using Raycast on the Mac, and it’s not even close. Even considering the caveats above, Raycast AI is simpler to understand and use with your existing workflows.&lt;/p&gt;
&lt;p&gt;Next time we’ll start looking at various Raycast extensions and how I’ve worked different tools into replacing them. Most likely I’ll keep it short and cover one or two extensions per post.&lt;/p&gt;
&lt;h3 id=&quot;additional-reading&quot;&gt;Additional Reading&lt;/h3&gt;
&lt;p&gt;Read Part 1 of this series &lt;a href=&quot;https://scottwillsey.com/spotomation-part-1&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>macOS 26 brings with it a more powerful Spotlight, and with it, a challenge – can it replace Raycast, specifically Raycast AI?</summary></item><item><title>Spotomation, Part 1 – Spotlighting</title><link>https://scottwillsey.com/spotomation-part-1</link><guid isPermaLink="true">https://scottwillsey.com/spotomation-part-1</guid><description>macOS 26 brings with it a more powerful Spotlight, and with it, a challenge – can it replace Raycast?</description><pubDate>Sat, 23 Aug 2025 08:10:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;spotlight-is-not-dead-it-was-just-resting&quot;&gt;Spotlight Is Not Dead, It Was Just Resting&lt;/h2&gt;
&lt;p&gt;For years, Spotlight on the Mac has been a bare-bones app launcher and search utility. Sure, it could find files and apps and do some basic web searches, but there’s a reason third-party launchers like Alfred and LaunchBar have kept loyal fans for years, and why relative newcomers like Raycast has captured many more. Spotlight has never really given the ability to act on files or folders or perform actions on search result items like third-party launchers have.&lt;/p&gt;
&lt;p&gt;With macOS 26, or macOS Tahoe, Spotlight surprised everyone by showing up packing an additional 15 lbs of muscle and some fancy new power moves.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Spotlight can now perform tasks like sending messages or email from the Spotlight search bar, but it doesn’t stop there. It can search within an app – for example, searching within Safari will search its history and bookmarks, or searching within Notes allows direct note creation and more. Most importantly for me, it can run shortcuts and Shortcuts actions.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Spotlight now lets you optionally narrow its area of focus with ⌘ key options – ⌘1 searches applications, ⌘2 searches files, ⌘3 searches shortcuts and even shortcuts actions, and ⌘4 searches the new, admittedly limited, clipboard history.&lt;/p&gt;
&lt;p&gt;The part about shortcuts and shortcuts actions might not have leapt off the page at you, but in reality, this was an unexpected and very welcome gift from Apple to power users. This is the feature that made me decide to see if Spotlight could replace Raycast for me. I knew I’d need some additional apps to fill some gaps, but I’m already familiar with Mac power user utilities and was able to make a pretty good assessment of what that would look like.&lt;/p&gt;
&lt;p&gt;Here you can see that hitting ⌘ Space to open Spotlight and then hitting ⌘3 to show actions results in Spotlight by default suggesting some actions and then beginning a list of actions that are available inside the Shortcuts app – without even needing to build a shortcut to run them. This is cool.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SpotlightActions-74cbcd55-5023-40d7-a26c-b17d33a4d995.jpg&quot;&gt;&lt;img alt=&quot;SpotlightActions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1392&quot; src=&quot;https://scottwillsey.com/_astro/SpotlightActions-74cbcd55-5023-40d7-a26c-b17d33a4d995.BCL4L6Ld_2cwoRt.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here’s another example of some of the Shortcuts system actions now available right within Spotlight. Again, anything Apple or 3rd party developers make available to Shortcuts with app intents are now free to use from within Spotlight.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SpotlightActionsMore-74cbcd55-5023-40d7-a26c-b17d33a4d995.jpg&quot;&gt;&lt;img alt=&quot;SpotlightActionsMore&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1392&quot; src=&quot;https://scottwillsey.com/_astro/SpotlightActionsMore-74cbcd55-5023-40d7-a26c-b17d33a4d995.B2wxgybo_Z1bxrdB.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“Yes, yes, yes”, you say. “Spotlight sounds great. But how can it compare to Raycast, the Power User tool for Power User Power Users?”&lt;/p&gt;
&lt;h2 id=&quot;raycast--the-power-user-utility-knife&quot;&gt;Raycast – The Power User Utility Knife&lt;/h2&gt;
&lt;p&gt;Don’t worry, I’m not here to argue that &lt;a href=&quot;https://www.raycast.com/&quot;&gt;Raycast&lt;/a&gt; isn’t powerful. It’s very powerful. It’s got tons of core features, tons of 3rd party extensions, thanks to its easily extensible nature, and it allows for simple integration of personally written scripts into Raycast Script Commands. I made use of this feature many times.&lt;/p&gt;
&lt;p&gt;I knew if I tried this experiment that I would have many 3rd party extensions to replace. I also knew, though, that replacing my script commands wouldn’t be a problem – I’d just use the exact same scripts. This is the beauty of Raycast Script Commands. They’re just scripts, with some extra header comments designed for Raycast’s understanding and to allow it to pass in parameters. I can simply call these scripts through Shortcuts or &lt;a href=&quot;https://redsweater.com/fastscripts/&quot;&gt;FastScripts 3&lt;/a&gt;, or run them from the command line.&lt;/p&gt;
&lt;p&gt;Another big Raycast feature that needs consideration is Raycast AI. Raycast gives access to a lot of current models, and provides features like AI prompts and presets, as well as quick AI (invoke in the Raycast search bar) and AI chat (a chat window with chats history and the ability to quickly switch models and copy answers, similar to ChatGPT, et al., on the web).&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;In my next post, I’m going to list some of the features, extensions, and script commands I used in Raycast and my assessment of how difficult they might be to replace, along with some initial ideas of how to replace them. After that, we can start looking at various specific items in detail, getting deeper into my past (Raycast) and current (Spotlight) workflows.&lt;/p&gt;
&lt;p&gt;I think it will be interesting and instructive to show specific actions and use-cases with Spotlight, because explaining the basic premise of its new features doesn’t really help bring the possibilities to life in the same way.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I really had to think hard about how much additional muscle made sense there, as if the whole analogy made any sense whatsoever. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;I know “shortcuts and Shortcuts actions” looks like inconsistent capitalization, but “shortcuts” are automations made in “Shortcuts” the app. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>macOS 26 brings with it a more powerful Spotlight, and with it, a challenge – can it replace Raycast?</summary></item><item><title>He’s Not Dead, He’s Resting!</title><link>https://scottwillsey.com/hes-not-dead-hes-resting</link><guid isPermaLink="true">https://scottwillsey.com/hes-not-dead-hes-resting</guid><description>Some updates to prove I&apos;m not dead! Tahoe Spotlight, Astro photos site, travel routers and Tailscale!</description><pubDate>Sun, 13 Jul 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m not dead yet, &lt;a href=&quot;https://www.youtube.com/watch?v=-SB4gB3DEhA&quot;&gt;I’m just resting&lt;/a&gt;!  I took a couple weeks to tour Japan with my daughter and then a couple more weeks to get over whatever I caught at the end of our trip (I genuinely suspect it was the terrible throat variation of Covid going around. It wiped me out).&lt;/p&gt;
&lt;p&gt;I have updates though!&lt;/p&gt;
&lt;h2 id=&quot;spotlighting-tahoe&quot;&gt;Spotlighting Tahoe&lt;/h2&gt;
&lt;p&gt;First of all, I installed the Tahoe developer beta on my Mac, and I immediately started playing with Apple’s updated Spotlight. If I had to bet money, I would never have put any down on being able to replace Raycast with it, but that’s exactly what I’ve done. I’ll have several posts on the hows and whys of this in the future.&lt;/p&gt;
&lt;h2 id=&quot;photos-with-a-lightbox&quot;&gt;Photos with a Lightbox&lt;/h2&gt;
&lt;p&gt;I took many photos in Japan. Not nearly enough, as it turns out, but many. Before I left for Japan, I started whipping together an Astro site that I could post them to, imagining I’d live-post from Japan, but that didn’t happen. In fact, I just now have the site to a workable state I’m happy with. It’s at &lt;a href=&quot;https://photos.scottwillsey.com/&quot;&gt;Photos and Words&lt;/a&gt;. I haven’t started adding my Japan trip photos yet though – stay tuned!&lt;/p&gt;
&lt;p&gt;I created a public GitHub repo (&lt;a href=&quot;https://github.com/scottaw66/astro-photoswipe&quot;&gt;scottaw66/astro-photoswipe: An Astro photo website with Photoswipe for the Lightbox functionality.&lt;/a&gt;) with the code so you can fork it and show me how much better of a programmer and designer than I am.&lt;/p&gt;
&lt;h2 id=&quot;tailscale-and-travel-routers&quot;&gt;Tailscale and Travel Routers&lt;/h2&gt;
&lt;p&gt;The combination of Tailscale and my &lt;a href=&quot;https://www.gl-inet.com/products/gl-axt1800/&quot;&gt;GL-AXT1800 / Slate AX - GL.iNet&lt;/a&gt; travel router was a huge win for me in Japan. The travel router is nice – it can connect to any wifi source so I was able to get it on the hotel networks and then all our devices could just connect to it. Even better, it supports Tailscale so I could use an exit node that is allowed to SSH into servers I help manage and web apps I need for paid work.&lt;/p&gt;
&lt;h2 id=&quot;more-to-come&quot;&gt;More to Come&lt;/h2&gt;
&lt;p&gt;Each of these probably deserves some coverage on its own, which is my plan. I’m really looking forward into coalescing my thoughts on Spotlight as a Raycast sherlocker, because I know many people will not believe it possible.&lt;/p&gt;</content:encoded><summary>Some updates to prove I&apos;m not dead! Tahoe Spotlight, Astro photos site, travel routers and Tailscale!</summary></item><item><title>/Now Page Update – Podcast Episode Artwork</title><link>https://scottwillsey.com/now-page-update-podcast-episode-artwork</link><guid isPermaLink="true">https://scottwillsey.com/now-page-update-podcast-episode-artwork</guid><description>I updated my /now page with podcast history episode artwork. Here&apos;s how it works.</description><pubDate>Thu, 22 May 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;I made a change yesterday to my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page to make the Podcasts section look nicer by including podcast artwork next to the episode entries. I think it adds visual interest, and (most importantly) it was fun to update my recent podcast history script to include it.&lt;/p&gt;
&lt;p&gt;This change was partially spurred by me switching from Overcast as my podcast app to Apple Podcasts due to a couple Overcast bugs that were annoying me. However, switching podcast apps did mean updating my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page Podcast episodes would be a bit more manual, due to Apple Podcasts not saving the history in a way that I can retrieve via automation. I started looking at using the iTunes API to grab episode information, and while doing so, I figured I may as well perform the simple chore of also grabbing the artwork along with the other episode information.&lt;/p&gt;
&lt;p&gt;But then Marco updated Overcast a couple days ago and it fixed some of the bugs that were bugging me, so I bugged right back out of Apple Podcasts land and back to Overcast.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; At this point, I could have just gone back to my Recent Overcast History Raycast script command with no changes, and no one would have ever noticed based on what appears on my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page, but the thought of showing podcast artwork as part of my recent listening history stuck with me. I decided I had to do it.&lt;/p&gt;
&lt;p&gt;Understanding how this works requires a little background on other parts of this script. Rather than bore you to death with ALL the details, I’ll just give you some relevant code snippets and then give full python module code dumps at the end. First though, here’s a before and after comparison of my recent podcast listening history.&lt;/p&gt;
&lt;p&gt;Then:
&lt;a href=&quot;https://scottwillsey.com/images/posts/ThenNowPodcasts-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.jpg&quot;&gt;&lt;img alt=&quot;ThenNowPodcasts&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;886&quot; src=&quot;https://scottwillsey.com/_astro/ThenNowPodcasts-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.C2cO5iPI_Z1GKjRT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now:
&lt;a href=&quot;https://scottwillsey.com/images/posts/NowNowPodcasts-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.jpg&quot;&gt;&lt;img alt=&quot;NowNowPodcasts&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1080&quot; src=&quot;https://scottwillsey.com/_astro/NowNowPodcasts-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.D3mj-ERS_3zMF3.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;podcast-listening-history-overview&quot;&gt;Podcast Listening History Overview&lt;/h2&gt;
&lt;p&gt;Basically the way I automate grabbing my recent podcast listening history for my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page goes like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log into my Overcast account and download my Overcast history OPML file.&lt;/li&gt;
&lt;li&gt;Parse the OPML file for all &lt;code&gt;podcast-episode&lt;/code&gt; elements with the &lt;code&gt;played&lt;/code&gt; attribute set to &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Filter these down to a specfic number of days worth, order them with most recently listened first, and then filter them again so that only the last 10 of those are returned.&lt;/li&gt;
&lt;li&gt;For each episode in this list, load the overcast episode details page and parse the URL of the podcast artwork image. Download it and shove it in a specific folder. Then create the markdown links (including images) for the episode for display on the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page and append it to the full list of episode links.&lt;/li&gt;
&lt;li&gt;Put this list of markdown links on the clipboard.&lt;/li&gt;
&lt;li&gt;Run a &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt; action to scale the artwork way down and put it in the correct folder in the website source for site compilation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All the above happens automatically when I run the script. I have it set up as a Raycast script command, so I trigger it to happen. I could have it update itself on a specific basis and automatically update, compile, and push the site, but I don’t. But that’s a logical series of next steps for anyone who wants a fully automated experience.&lt;/p&gt;
&lt;h2 id=&quot;the-raycast-script-command&quot;&gt;The Raycast Script Command&lt;/h2&gt;
&lt;p&gt;Here’s the Raycast script command. It’s called &lt;strong&gt;Recent Overcast History&lt;/strong&gt;. Note that any Raycast script command can be run outside of Raycast like any other script of its kind (bash, in this case), but I do call this through Raycast.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:167ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title Recent Overcast History&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.icon ../icons/Overcast.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;dropdown&quot;, &quot;placeholder&quot;: &quot;Choose Mode&quot;, &quot;data&quot;: [ { &quot;title&quot;: &quot;Normal&quot;, &quot;value&quot;: &quot;normal&quot; }, { &quot;title&quot;: &quot;Force&quot;, &quot;value&quot;: &quot;force&quot; } ] }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Website&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Grabs OC history and gets the most recent listened or in progress from it&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;$1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;force&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.py&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-f&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.py&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Applications/Retrobatch.app/Contents/MacOS/Retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;--workflow&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/OCPodcastArtworkResize.retrobatch&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;wait&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# delete all files in /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;rm&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Recent Overcast History# @raycast.mode fullOutput# Optional parameters:# @raycast.icon ../icons/Overcast.png# @raycast.argument1 { &amp;#x22;type&amp;#x22;: &amp;#x22;dropdown&amp;#x22;, &amp;#x22;placeholder&amp;#x22;: &amp;#x22;Choose Mode&amp;#x22;, &amp;#x22;data&amp;#x22;: [ { &amp;#x22;title&amp;#x22;: &amp;#x22;Normal&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;normal&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;Force&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;force&amp;#x22; } ] }# @raycast.packageName Website# Documentation:# @raycast.description Grabs OC history and gets the most recent listened or in progress from it# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseyTYPE=$1if [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;force&amp;#x27; ]; then    /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.py -felse    /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.pyfi/Applications/Retrobatch.app/Contents/MacOS/Retrobatch --workflow /Users/scott/Scripts/scottwillsey/scottwillsey-images/OCPodcastArtworkResize.retrobatch &amp;#x26;wait# delete all files in /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/imagesrm -f /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images/*&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Recent Overcast History&lt;/strong&gt; has one dropdown parameter I need to choose: “Normal” or “Force”. I have this because if it’s been less than 2 days, I don’t redownload the OPML file unless I choose “Force”. One nice thing about Raycast is it always remembers what your last choice was and defaults to that.&lt;/p&gt;
&lt;h2 id=&quot;the-python-scripts&quot;&gt;The Python Scripts&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Recent Overcast History&lt;/strong&gt;’s first action is to run &lt;code&gt;scottwillsey-overcast-history/main.py&lt;/code&gt;, which is responsible for initiating the series of steps I outlined above.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;main.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:117ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/Users/scott/Scripts/python/venv/bin/python&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; argparse&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; timedelta&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_history &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; load_oc_history&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_opml_parse &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_opml_parse&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;p &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; argparse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ArgumentParser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;add_argument&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;--force&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;store_true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;help&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Force local OPML file parsing&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;args &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;parse_args&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;file_is_old&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;exists&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_mod_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;getmtime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;display_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromtimestamp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_mod_date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file created on &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;display_date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;strftime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromtimestamp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_mod_date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;file_datetime = &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;file_datetime&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;stale_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;timedelta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;days&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;stale_date = &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;stale_date&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; file_datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; stale_date&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;history_was_loaded &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_is_old&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file is older than &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; days or doesn&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;t exist. Downloading new data...&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;history_was_loaded &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load_oc_history&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file is less than &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; days old. Skipping download.&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; history_was_loaded &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; args&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;force&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Parsing OPML file...&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;oc_opml_parse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;():&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Done!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;You have to update your podcast list manually.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;No new Overcast history generated.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#6CB6FF&quot;&gt;__name__&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;__main__&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/Users/scott/Scripts/python/venv/bin/pythonimport argparseimport osfrom datetime import datetime, timedeltaimport constants as constfrom oc_history import load_oc_historyfrom oc_opml_parse import oc_opml_parsep = argparse.ArgumentParser()p.add_argument(&amp;#x27;-f&amp;#x27;, &amp;#x27;--force&amp;#x27;, action=&amp;#x27;store_true&amp;#x27;, help=&amp;#x27;Force local OPML file parsing&amp;#x27;)args = p.parse_args()def file_is_old(file_path):    if not os.path.exists(file_path):        return True    file_mod_date = os.path.getmtime(file_path)    display_date = datetime.fromtimestamp(file_mod_date)    print(f&amp;#x27;OPML file created on {display_date.strftime(&amp;#x22;%Y-%m-%d&amp;#x22;)}&amp;#x27;)    file_datetime = datetime.fromtimestamp(file_mod_date)    print(f&amp;#x27;file_datetime = {file_datetime}&amp;#x27;)    stale_date = datetime.now() - timedelta(days=const.OPML_AGE_LIMIT_DAYS)    print(f&amp;#x27;stale_date = {stale_date}&amp;#x27;)    return file_datetime &lt; stale_datedef main():    history_was_loaded = False    if file_is_old(const.OPML_FILE_PATH):        print(f&amp;#x27;OPML file is older than {const.OPML_AGE_LIMIT_DAYS} days or doesn\&amp;#x27;t exist. Downloading new data...&amp;#x27;)        history_was_loaded = load_oc_history()    else:        print(f&amp;#x27;OPML file is less than {const.OPML_AGE_LIMIT_DAYS} days old. Skipping download.&amp;#x27;)    if history_was_loaded or args.force:        print(&amp;#x27;Parsing OPML file...&amp;#x27;)        if oc_opml_parse():            print(&amp;#x27;Done!&amp;#x27;)        else:            print(&amp;#x27;You have to update your podcast list manually.&amp;#x27;)    else:        print(&amp;#x27;No new Overcast history generated.&amp;#x27;)if __name__ == &amp;#x22;__main__&amp;#x22;:    main()&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I’m not going to go through all the scripts like the login script and the downloading of the OPML file, but the OPML parsing script is interesting so you can see how I’m finding the episode history I want, getting podcast artwork for it, and then creating the markdown for each episode that goes on the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;oc_opml_parse.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:136ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; pyperclip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; xml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;etree&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;ElementTree&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ET&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; timezone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; timedelta&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_artwork &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; load_episode_artwork&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;find_podcast_name&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;episode_id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; podcast &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.//outline[@type=&apos;rss&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;outline[@type=&apos;podcast-episode&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; episode_id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Unknown&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;oc_opml_parse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;content &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;content &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;FileNotFoundError&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;File not found: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;root &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ET&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromstring&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Find all podcast episode entries&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.//outline[@type=&apos;podcast-episode&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;current_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;timezone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;utc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Filter episodes with played=&quot;1&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# played_episodes = [ep for ep in episodes if ep.get(&apos;played&apos;) == &apos;1&apos;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;played_episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; episodes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;played&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;current_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;strptime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;userUpdatedDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;T%H:%M:%S%z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)).&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;days&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Sort episodes by userUpdatedDate, most recent first&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;played_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF&quot;&gt;lambda&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;strptime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;userUpdatedDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;T%H:%M:%S%z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;reverse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the most recent episodes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;top_episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; played_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;NUMBER_OF_EPISODES&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Print the results&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; top_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episode_artwork &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load_episode_artwork&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;image_link &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;[![&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episode_artwork&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; episode_artwork &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;image_link&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;find_podcast_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; – &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;episodes_list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import pyperclipimport xml.etree.ElementTree as ETimport constants as constfrom datetime import datetime, timezone, timedeltafrom oc_artwork import load_episode_artworkdef find_podcast_name(root, episode_id):    for podcast in root.findall(&amp;#x22;.//outline[@type=&amp;#x27;rss&amp;#x27;]&amp;#x22;):        for ep in podcast.findall(&amp;#x22;outline[@type=&amp;#x27;podcast-episode&amp;#x27;]&amp;#x22;):            if ep.get(&amp;#x27;overcastId&amp;#x27;) == episode_id:                return podcast.get(&amp;#x27;text&amp;#x27;)    return &amp;#x22;Unknown&amp;#x22;def oc_opml_parse():    with open(const.OPML_FILE_PATH, &amp;#x27;r&amp;#x27;) as f:        content = f.read()    try:        with open(const.OPML_FILE_PATH, &amp;#x27;r&amp;#x27;) as f:            content = f.read()    except FileNotFoundError:        print(f&amp;#x22;File not found: {const.OPML_FILE_PATH}&amp;#x22;)        return None    root = ET.fromstring(content)    # Find all podcast episode entries    episodes = root.findall(&amp;#x22;.//outline[@type=&amp;#x27;podcast-episode&amp;#x27;]&amp;#x22;)    current_date = datetime.now(timezone.utc)    # Filter episodes with played=&amp;#x22;1&amp;#x22;    # played_episodes = [ep for ep in episodes if ep.get(&amp;#x27;played&amp;#x27;) == &amp;#x27;1&amp;#x27;]    played_episodes = [        ep for ep in episodes        if ep.get(&amp;#x27;played&amp;#x27;) == &amp;#x27;1&amp;#x27; and        (current_date - datetime.strptime(ep.get(&amp;#x27;userUpdatedDate&amp;#x27;), &amp;#x22;%Y-%m-%dT%H:%M:%S%z&amp;#x22;)).days &lt;= (const.OPML_AGE_LIMIT_DAYS + 1)    ]    # Sort episodes by userUpdatedDate, most recent first    played_episodes.sort(key=lambda ep: datetime.strptime(ep.get(&amp;#x27;userUpdatedDate&amp;#x27;), &amp;#x22;%Y-%m-%dT%H:%M:%S%z&amp;#x22;), reverse=True)    # Get the most recent episodes    top_episodes = played_episodes[:const.NUMBER_OF_EPISODES]    # Print the results    episodes_list = &amp;#x22;&amp;#x22;    for ep in top_episodes:        episode_artwork = load_episode_artwork(ep.get(&amp;#x27;overcastId&amp;#x27;), ep.get(&amp;#x27;overcastUrl&amp;#x27;))        image_link = f&amp;#x22;[![{ep.get(&amp;#x27;title&amp;#x27;)}]({episode_artwork})]({ep.get(&amp;#x27;overcastUrl&amp;#x27;)})&amp;#x22; if episode_artwork else &amp;#x22;&amp;#x22;        episodes_list += f&amp;#x22;{image_link}[{find_podcast_name(root, ep.get(&amp;#x27;overcastId&amp;#x27;))} – {ep.get(&amp;#x27;title&amp;#x27;)}]({ep.get(&amp;#x27;overcastUrl&amp;#x27;)})\n&amp;#x22;    print(episodes_list)    pyperclip.copy(episodes_list)    return True&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;All the real fun happens in the function &lt;code&gt;oc_opml_parse()&lt;/code&gt;, which is called by &lt;code&gt;main.py&lt;/code&gt;. First it tries to open the OPML file and then uses the &lt;code&gt;xml.etree.ElementTree&lt;/code&gt; module to get the XML model of the data.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:56ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;oc_opml_parse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;content &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;content &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;FileNotFoundError&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;File not found: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;root &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ET&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromstring&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;def oc_opml_parse():    with open(const.OPML_FILE_PATH, &amp;#x27;r&amp;#x27;) as f:        content = f.read()    try:        with open(const.OPML_FILE_PATH, &amp;#x27;r&amp;#x27;) as f:            content = f.read()    except FileNotFoundError:        print(f&amp;#x22;File not found: {const.OPML_FILE_PATH}&amp;#x22;)        return None    root = ET.fromstring(content)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Next, it parses that for the list of episodes and starts winnowing them down to played episodes, ordered by most recent first, covering a specific timespan, and then returns the first 10 episodes on that list.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:132ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Find all podcast episode entries&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.//outline[@type=&apos;podcast-episode&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;current_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;timezone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;utc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Filter episodes with played=&quot;1&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# played_episodes = [ep for ep in episodes if ep.get(&apos;played&apos;) == &apos;1&apos;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;played_episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; episodes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;played&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;current_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;strptime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;userUpdatedDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;T%H:%M:%S%z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)).&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;days&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Sort episodes by userUpdatedDate, most recent first&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;played_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF&quot;&gt;lambda&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;strptime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;userUpdatedDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;T%H:%M:%S%z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;reverse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the most recent episodes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;top_episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; played_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;NUMBER_OF_EPISODES&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;# Find all podcast episode entries    episodes = root.findall(&amp;#x22;.//outline[@type=&amp;#x27;podcast-episode&amp;#x27;]&amp;#x22;)    current_date = datetime.now(timezone.utc)    # Filter episodes with played=&amp;#x22;1&amp;#x22;    # played_episodes = [ep for ep in episodes if ep.get(&amp;#x27;played&amp;#x27;) == &amp;#x27;1&amp;#x27;]    played_episodes = [        ep for ep in episodes        if ep.get(&amp;#x27;played&amp;#x27;) == &amp;#x27;1&amp;#x27; and        (current_date - datetime.strptime(ep.get(&amp;#x27;userUpdatedDate&amp;#x27;), &amp;#x22;%Y-%m-%dT%H:%M:%S%z&amp;#x22;)).days &lt;= (const.OPML_AGE_LIMIT_DAYS + 1)    ]    # Sort episodes by userUpdatedDate, most recent first    played_episodes.sort(key=lambda ep: datetime.strptime(ep.get(&amp;#x27;userUpdatedDate&amp;#x27;), &amp;#x22;%Y-%m-%dT%H:%M:%S%z&amp;#x22;), reverse=True)    # Get the most recent episodes    top_episodes = played_episodes[:const.NUMBER_OF_EPISODES]&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Finally, it creates the markdown for all of the episodes in the list, including loading the Overcast episode page for each episode and finding the podcast artwork from it.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:136ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:1ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Print the results&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; top_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episode_artwork &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load_episode_artwork&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;image_link &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;[![&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episode_artwork&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; episode_artwork &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;image_link&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;find_podcast_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; – &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;episodes_list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot; # Print the results    episodes_list = &amp;#x22;&amp;#x22;    for ep in top_episodes:        episode_artwork = load_episode_artwork(ep.get(&amp;#x27;overcastId&amp;#x27;), ep.get(&amp;#x27;overcastUrl&amp;#x27;))        image_link = f&amp;#x22;[![{ep.get(&amp;#x27;title&amp;#x27;)}]({episode_artwork})]({ep.get(&amp;#x27;overcastUrl&amp;#x27;)})&amp;#x22; if episode_artwork else &amp;#x22;&amp;#x22;        episodes_list += f&amp;#x22;{image_link}[{find_podcast_name(root, ep.get(&amp;#x27;overcastId&amp;#x27;))} – {ep.get(&amp;#x27;title&amp;#x27;)}]({ep.get(&amp;#x27;overcastUrl&amp;#x27;)})\n&amp;#x22;    print(episodes_list)    pyperclip.copy(episodes_list)    return True&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Here’s what that &lt;code&gt;load_episode_artwork&lt;/code&gt; part looks like:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;oc_artwork.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:118ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; re&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; uuid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;load_episode_artwork&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;episode_id&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;episode_url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the overcast episode page&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;episode_url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;status_code&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;SUCCESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Overcast episode page downloaded&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# search the contents of r.text for podcast artwork and save the first match to a variable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;match &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; re&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--1:#811F3F;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;img class=&quot;art fullart&quot; src=&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;overcast-cdn&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;com&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;art&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--1:#811F3F;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; match&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the URL of the artwork&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;artwork_url &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; match&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;group&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Artwork URL: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;artwork_url&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Download and save the artwork to a file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;art &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;artwork_url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; art&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;status_code&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;SUCCESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Artwork downloaded&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Save the artwork to a file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# generate a file name including UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episode_id&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;uuid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;uuid4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.png&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;artwork_file_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OC_ARTWORK_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; file_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;artwork_file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;wb&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:20ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;art&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Artwork saved to &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;artwork_file_path&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;artwork_url &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;../../assets/images/oc_artwork/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; artwork_url&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Failed to download artwork. Status code: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;art&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;status_code&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;No artwork URL found on episode page.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Failed to download Overcast episode page. Status code: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;status_code&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&amp;#x27;, r.text)        if match:            # Get the URL of the artwork            artwork_url = match.group(1)            print(f&amp;#x27;Artwork URL: {artwork_url}&amp;#x27;)            # Download and save the artwork to a file            art = session.get(artwork_url)            if art.status_code == const.SUCCESS:                print(&amp;#x27;Artwork downloaded&amp;#x27;)                # Save the artwork to a file                # generate a file name including UUID                file_name = f&amp;#x27;{episode_id}-{uuid.uuid4()}.png&amp;#x27;                artwork_file_path = os.path.join(const.OC_ARTWORK_FILE_PATH, file_name)                with open(artwork_file_path, &amp;#x27;wb&amp;#x27;) as f:                    f.write(art.content)                print(f&amp;#x27;Artwork saved to {artwork_file_path}&amp;#x27;)                artwork_url = f&amp;#x27;../../assets/images/oc_artwork/{file_name}&amp;#x27;                return artwork_url            else:                print(f&amp;#x27;Failed to download artwork. Status code: {art.status_code}&amp;#x27;)        else:            print(&amp;#x27;No artwork URL found on episode page.&amp;#x27;)    else:        print(f&amp;#x27;Failed to download Overcast episode page. Status code: {r.status_code}&amp;#x27;)    return None&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Because the image URL for the artwork always contains &lt;code&gt;https://public.overcast-cdn.com/art/&lt;/code&gt;, it’s always a simple thing to find it with a regular expression and then download that file. I name the artwork files as the Overcast episode ID with a UUID appended. I save those to a folder for processing by Retrobatch.&lt;/p&gt;
&lt;h2 id=&quot;the-retrobatch-script&quot;&gt;The Retrobatch Script&lt;/h2&gt;
&lt;p&gt;Remember how the script command runs the Python script and then runs a Retrobatch action (script command included below for memory-jogging purposes)?&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:155ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;$1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;force&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.py&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-f&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.py&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Applications/Retrobatch.app/Contents/MacOS/Retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;--workflow&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/OCPodcastArtworkResize.retrobatch&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;wait&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# delete all files in /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;rm&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;TYPE=$1if [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;force&amp;#x27; ]; then    /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.py -felse    /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/main.pyfi/Applications/Retrobatch.app/Contents/MacOS/Retrobatch --workflow /Users/scott/Scripts/scottwillsey/scottwillsey-images/OCPodcastArtworkResize.retrobatch &amp;#x26;waitrm -f /Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images/*&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Here’s what the Retrobatch action looks like:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RetrobatchOCArtwork-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.jpg&quot;&gt;&lt;img alt=&quot;RetrobatchOCArtwork&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;928&quot; src=&quot;https://scottwillsey.com/_astro/RetrobatchOCArtwork-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.BH1Qf76O_Z1eQzg8.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It grabs images from &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images&lt;/code&gt;, where the Python script saved them, resizes them to 250 pixels wide, with corresponding correct height, and saves them to my website source’s &lt;code&gt;oc_artwork&lt;/code&gt; directory for inclusion when the site is compiled.&lt;/p&gt;
&lt;p&gt;After that, the script command deletes the source images from &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-overcast-history/images&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;the-markdown&quot;&gt;The Markdown&lt;/h2&gt;
&lt;p&gt;The result of ALL OF THIS is Markdown that looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:327ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;Crypto in Kentucky: The next extraction&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/oc_artwork/5340766157298005-66bbb48e-a6c9-4817-85f8-3c2284514230.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+BL5ZgWiWVU&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Click Here – Crypto in Kentucky: The next extraction&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+BL5ZgWiWVU&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Subscriber Comment Show: Don’t Read Our Emails With Your Kids, Maybe&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;../../assets/images/oc_artwork/5121671711622378-e7b941aa-1c52-45f6-bf90-641d33eb41cb.png&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;The 404 Media Podcast (Premium Feed) – Subscriber Comment Show: Don’t Read Our Emails With Your Kids, Maybe&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;Is Elon Musk Really Stepping Back from DOGE?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/oc_artwork/4904748076882358-8c4c7d47-aa70-4967-b316-e7fd54a2424f.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+BFs16bV2bY&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Uncanny Valley | WIRED – Is Elon Musk Really Stepping Back from DOGE?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+BFs16bV2bY&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;421: ‘The Ratchet of Flippancy’, With Craig Mod&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/oc_artwork/135464155213596-e66d96b8-bbcd-4557-a110-4540d876f3d0.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+B7NDTZ7xw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;The Talk Show With John Gruber – 421: ‘The Ratchet of Flippancy’, With Craig Mod&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+B7NDTZ7xw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;546: Dave And/Or Buster’s&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/oc_artwork/245011785900358-eae0f377-2a82-407f-96d0-49f9494a93e0.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+De1kB24UY&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;The Rebound – 546: Dave And/Or Buster’s&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+De1kB24UY&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;CarPlay Ultra and legal localization (6C Podcast)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;../../assets/images/oc_artwork/2092466581013757-93182e76-be62-41ab-897a-fdaf4987f622.png&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;Six Colors – CarPlay Ultra and legal localization (6C Podcast)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Airbnb 2025 Summer Release: An Interview with Jud Coplan and Teo Connor&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;../../assets/images/oc_artwork/5561968007797863-3e9a8de1-8419-43d1-8589-dc732b60d920.png&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;AppStories+ – Airbnb 2025 Summer Release: An Interview with Jud Coplan and Teo Connor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;PBS 179 of X — Introducing Liquid Templates in GitHub Pages with Jekyll&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/oc_artwork/640362802650572-686da9c0-ce7a-4559-b04e-08ca7c590250.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+JGaBVhHcw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Programming By Stealth – PBS 179 of X — Introducing Liquid Templates in GitHub Pages with Jekyll&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+JGaBVhHcw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;Between Two Nerds: Why hackers and spies don’t mix&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/oc_artwork/4031462282408809-7fc44fa7-0ef1-4f03-942b-f8f052be6ffc.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+5Sl_VEs2k&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Risky Bulletin – Between Two Nerds: Why hackers and spies don’t mix&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://overcast.fm/+5Sl_VEs2k&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[![Crypto in Kentucky: The next extraction](../../assets/images/oc_artwork/5340766157298005-66bbb48e-a6c9-4817-85f8-3c2284514230.png)](https://overcast.fm/+BL5ZgWiWVU)[Click Here – Crypto in Kentucky: The next extraction](https://overcast.fm/+BL5ZgWiWVU)![Subscriber Comment Show: Don’t Read Our Emails With Your Kids, Maybe](../../assets/images/oc_artwork/5121671711622378-e7b941aa-1c52-45f6-bf90-641d33eb41cb.png)The 404 Media Podcast (Premium Feed) – Subscriber Comment Show: Don’t Read Our Emails With Your Kids, Maybe[![Is Elon Musk Really Stepping Back from DOGE?](../../assets/images/oc_artwork/4904748076882358-8c4c7d47-aa70-4967-b316-e7fd54a2424f.png)](https://overcast.fm/+BFs16bV2bY)[Uncanny Valley | WIRED – Is Elon Musk Really Stepping Back from DOGE?](https://overcast.fm/+BFs16bV2bY)[![421: ‘The Ratchet of Flippancy’, With Craig Mod](../../assets/images/oc_artwork/135464155213596-e66d96b8-bbcd-4557-a110-4540d876f3d0.png)](https://overcast.fm/+B7NDTZ7xw)[The Talk Show With John Gruber – 421: ‘The Ratchet of Flippancy’, With Craig Mod](https://overcast.fm/+B7NDTZ7xw)[![546: Dave And/Or Buster’s](../../assets/images/oc_artwork/245011785900358-eae0f377-2a82-407f-96d0-49f9494a93e0.png)](https://overcast.fm/+De1kB24UY)[The Rebound – 546: Dave And/Or Buster’s](https://overcast.fm/+De1kB24UY)![CarPlay Ultra and legal localization (6C Podcast)](../../assets/images/oc_artwork/2092466581013757-93182e76-be62-41ab-897a-fdaf4987f622.png)Six Colors – CarPlay Ultra and legal localization (6C Podcast)![Airbnb 2025 Summer Release: An Interview with Jud Coplan and Teo Connor](../../assets/images/oc_artwork/5561968007797863-3e9a8de1-8419-43d1-8589-dc732b60d920.png)AppStories+ – Airbnb 2025 Summer Release: An Interview with Jud Coplan and Teo Connor[![PBS 179 of X — Introducing Liquid Templates in GitHub Pages with Jekyll](../../assets/images/oc_artwork/640362802650572-686da9c0-ce7a-4559-b04e-08ca7c590250.png)](https://overcast.fm/+JGaBVhHcw)[Programming By Stealth – PBS 179 of X — Introducing Liquid Templates in GitHub Pages with Jekyll](https://overcast.fm/+JGaBVhHcw)[![Between Two Nerds: Why hackers and spies don’t mix](../../assets/images/oc_artwork/4031462282408809-7fc44fa7-0ef1-4f03-942b-f8f052be6ffc.png)](https://overcast.fm/+5Sl_VEs2k)[Risky Bulletin – Between Two Nerds: Why hackers and spies don’t mix](https://overcast.fm/+5Sl_VEs2k)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You may have noticed, if you’re the type of person who just loves staring at and parsing markdown listings, that not all of these actually link to the Overcast episode. I remove the links for paid podcast episodes. I don’t pay for a lot of podcasts, but I do pay for some.&lt;/p&gt;
&lt;p&gt;And that’s it! It all happens instantly and automatically when I fire up the script command from Raycast!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/OvercastScriptCommand-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.jpg&quot;&gt;&lt;img alt=&quot;OvercastScriptCommand&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1190&quot; src=&quot;https://scottwillsey.com/_astro/OvercastScriptCommand-77212446-1a4d-4af9-8e5c-f9e3c329fcd7.BDdVloH5_14e0Rl.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I apologize unreservedly for that sentence. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>I updated my /now page with podcast history episode artwork. Here&apos;s how it works.</summary></item><item><title>Raycast AI as Translator</title><link>https://scottwillsey.com/raycast-ai-as-translator</link><guid isPermaLink="true">https://scottwillsey.com/raycast-ai-as-translator</guid><description>A compelling use case for AI: a Japanese to English translator that gives me a translation, breakdown of the Chinese characters in a Japanese phrase, and the ability to ask follow-up questions.</description><pubDate>Sun, 04 May 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;Here’s a use case for AI that I really like: a Japanese to English translator that gives me a translation and breakdown of the kanji (Chinese characters) in a Japanese phrase or passage. The reason AI is really good for this as opposed to Japanese apps that let you paste in phrases or do text detection in images is that you get translation, the ability to specify how you want the results returned, the image text detection, AND the ability to ask follow-up questions.&lt;/p&gt;
&lt;p&gt;I created both a Raycast command and a Raycast AI chat preset with instructions on translation from Japanese to English.&lt;/p&gt;
&lt;p&gt;The Raycast AI Command:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/J-ECommand-32bc3727-376c-4b31-880c-fd48c6ecdd66.jpg&quot;&gt;&lt;img alt=&quot;J-E Command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1196&quot; src=&quot;https://scottwillsey.com/_astro/J-ECommand-32bc3727-376c-4b31-880c-fd48c6ecdd66.DVfgzCfZ_ZtMCso.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Raycast AI Chat Preset:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/J-EChatPreset-32bc3727-376c-4b31-880c-fd48c6ecdd66.jpg&quot;&gt;&lt;img alt=&quot;J-E Chat Preset&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1056&quot; src=&quot;https://scottwillsey.com/_astro/J-EChatPreset-32bc3727-376c-4b31-880c-fd48c6ecdd66.K5dyQtRg_Z1Ch4JV.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The command opens in Raycast Quick AI view and uses the contents of the clipboard as the source (including screenshots or photos). The chat preset is for the separate AI chat window and I can paste or attach whatever I like as the source.&lt;/p&gt;
&lt;p&gt;Here’s an example use case:&lt;/p&gt;
&lt;p&gt;I took a screenshot of an easy Japanese lesson from JapanesePod101.com and gave it to the chat preset to translate.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/JPhrase-32bc3727-376c-4b31-880c-fd48c6ecdd66.jpg&quot;&gt;&lt;img alt=&quot;JPhrase&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;146&quot; src=&quot;https://scottwillsey.com/_astro/JPhrase-32bc3727-376c-4b31-880c-fd48c6ecdd66.DCsqDdLp_2ci4Ay.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;やめてよ。「野沢」か、「菜味」って呼んでって何度も言っているでしょう。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here’s the full translation result, including a follow-up question of mine as to why it used one specific word for “many times” instead of another.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:348ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Notification: Preset: J to E translator&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--1fw:bold;--2:#6CB6FF;--2fw:bold&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Scott Willsey:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--1fw:bold;--2:#6CB6FF;--2fw:bold&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Raycast AI: Okay, here is the breakdown and translation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;English Translation:&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Stop it! I&apos;ve told you so many times to call me &quot;Nozawa&quot; or &quot;Nami&quot;, haven&apos;t I?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;Japanese Transcription (Kana):&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;やめてよ。「のざわ」か、「なみ」ってよんでってなんどもいっているでしょう。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(Yamete yo. &quot;Nozawa&quot; ka, &quot;Nami&quot; tte yonde tte nando mo itte iru deshou.)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;Kanji Breakdown:&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Kanji    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Reading(s) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Meaning                       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Compound Word(s) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Compound Reading &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Compound Meaning         &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:---------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:----------------------------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:---------------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:---------------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:-----------------------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 野       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; no, ya     &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; field, plain, rustic, wild    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 野沢             &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Nozawa           &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Surname: Nozawa          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 沢       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; sawa, zawa &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; swamp, marsh, stream          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 野沢             &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Nozawa           &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Surname: Nozawa          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 菜       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; na, sai    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; vegetables, greens            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 菜味             &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Nami             &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Given Name: Nami*        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 味       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; mi, aji    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; taste, flavor                 &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 菜味             &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Nami             &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Given Name: Nami*        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 呼       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; yo(bu), ko &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; call, invite, breathe out     &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 呼んで           &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; yonde            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Call (te-form of 呼ぶ) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 何       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; nan, nani  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; what, how many                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 何度も           &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; nando mo         &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; many times, repeatedly   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 度       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; do, tabi   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; degrees, occurrence, time     &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 何度も           &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; nando mo         &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; many times, repeatedly   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 言       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; i(u), koto &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; say, word, speech, statement  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; 言っている       &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; itte iru         &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; are saying, have said    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#D40000;--1fs:italic;--2:#F5776E;--2fs:italic&quot;&gt;\*&lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;Note: 菜味 (Nami) is one possible reading for this name. Other readings exist.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--1fw:bold;--2:#6CB6FF;--2fw:bold&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Scott Willsey: why 何度 intead of 何回 ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--1fw:bold;--2:#6CB6FF;--2fw:bold&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Raycast AI: That&apos;s a great question! While both 何度 (nando) and 何回 (nankai) translate to &quot;how many times&quot; or &quot;how often,&quot; there&apos;s a subtle difference in nuance and usage.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何回 (nankai): Focus on Countable Occurrences&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   This tends to focus more on the specific, countable &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;number&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; of times an action happened or will happen. It&apos;s often used when you could potentially answer with a precise number (even if the speaker doesn&apos;t know it).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   Think of it like counting discrete events.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   Example: 「この映画、&lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何回&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;見ましたか？」 (Kono eiga, &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;nankai&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; mimashita ka?) - &quot;How many times have you seen this movie?&quot; (You could answer: 3 times, 5 times, etc.)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度 (nando): Focus on Repetition/Frequency (Slightly More Abstract/Emphatic)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   This often emphasizes the &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;repetition&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; or &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;frequency&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; itself, rather than just the exact count. It can feel slightly more abstract or carry a bit more emotional weight (like surprise, exasperation, or gratitude for repeated actions).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   It&apos;s very common in the pattern &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度も (nando mo)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;, meaning &quot;many times,&quot; &quot;again and again,&quot; or &quot;repeatedly.&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   Example: 「&lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度も&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;すみません。」 ( &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;Nando mo&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; sumimasen.) - &quot;Sorry [for bothering you] so many times.&quot; (Focus is on the repeated nature of the bother).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   Example: 「&lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;言ったらわかるの？」 ( &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;Nando&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ittara wakaru no?) - &quot;How many times do I have to tell you?&quot; (Expresses frustration at the repetition needed).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;In the Sentence:&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#FF9CAC;--0fs:italic;--1:#0451A5&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#000000&quot;&gt; やめてよ。「野沢」か、「菜味」って呼んでって&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度も&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#000000;--2:#8DDB8C&quot;&gt;言っているでしょう。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#FF9CAC;--0fs:italic;--1:#0451A5&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#000000&quot;&gt; (Yamete yo. &quot;Nozawa&quot; ka, &quot;Nami&quot; tte yonde tte &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;nando mo&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#000000;--2:#8DDB8C&quot;&gt; itte iru deshou.)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Here, &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度も (nando mo)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; is used. This emphasizes the &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;repeated nature&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; of the speaker telling the listener how to address them. It conveys a sense of &quot;I&apos;ve told you this &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;again and again&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;.&quot; The focus isn&apos;t necessarily on &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;exactly&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; how many times (was it 5 times? 10 times?), but on the fact that it has happened &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;repeatedly&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;, implying frustration.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;While you &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;could&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; technically say 「何回も言っているでしょう」 (nankai mo itte iru deshou), &lt;/span&gt;&lt;span style=&quot;--1:#000080;--1fw:bold;--2:#ADBAC7;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fw:bold&quot;&gt;何度も&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fw:bold&quot;&gt;**&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; feels slightly more natural and common in this specific context of expressing exasperation about repeated instructions or warnings. It highlights the &lt;/span&gt;&lt;span style=&quot;--1:#000000;--1fs:italic;--2:#ADBAC7;--2fs:italic&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0fs:italic&quot;&gt;frequency&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; and the speaker&apos;s feeling about it.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; やめてよ。「野沢」か、「菜味」って呼んでって**何度も**言っているでしょう。&gt; (Yamete yo. &amp;#x22;Nozawa&amp;#x22; ka, &amp;#x22;Nami&amp;#x22; tte yonde tte **nando mo** itte iru deshou.)Here, **何度も (nando mo)** is used. This emphasizes the *repeated nature* of the speaker telling the listener how to address them. It conveys a sense of &amp;#x22;I&amp;#x27;ve told you this *again and again*.&amp;#x22; The focus isn&amp;#x27;t necessarily on *exactly* how many times (was it 5 times? 10 times?), but on the fact that it has happened *repeatedly*, implying frustration.While you *could* technically say 「何回も言っているでしょう」 (nankai mo itte iru deshou), **何度も** feels slightly more natural and common in this specific context of expressing exasperation about repeated instructions or warnings. It highlights the *frequency* and the speaker&amp;#x27;s feeling about it.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Not only does this give me a full breakdown of the kanji, including their compound and individual meanings, but it lets me ask questions about specific parts of the sentence.&lt;/p&gt;
&lt;p&gt;Bear in mind I lived in Japan for 8 years and I’m going to know when an LLM gives me something bogus or tries to lead me astray. But this is good for reminding me how specific conjugations work or the differences in terms that I might not understand.&lt;/p&gt;
&lt;p&gt;I was a kid when I lived in Japan, and I never formally studied Japanese. My learning was based on intuitive understanding as I played with other kids, watched TV, and spent time listening to people around me talking. Inevitably I didn’t learn some nuances or made incorrect assumptions that then became part of my understanding of Japanese. That’s why use cases like this, with a custom kanji breakdown instruction and the ability to ask questions about the translation or the source phrase, are super handy for me.&lt;/p&gt;
&lt;p&gt;You can learn more about Raycast &lt;a href=&quot;https://manual.raycast.com/ai&quot;&gt;AI&lt;/a&gt;, &lt;a href=&quot;https://manual.raycast.com/ai#block-1cfd6e4a8215812f87f5dbc614adbccf&quot;&gt;Raycast AI commands&lt;/a&gt;, and &lt;a href=&quot;https://ray.so/presets/code&quot;&gt;Raycast AI chat presets&lt;/a&gt; &lt;a href=&quot;https://manual.raycast.com/ai&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>A compelling use case for AI: a Japanese to English translator that gives me a translation, breakdown of the Chinese characters in a Japanese phrase, and the ability to ask follow-up questions.</summary></item><item><title>Slowly Posting Reviews</title><link>https://scottwillsey.com/slowly-posting-reviews</link><guid isPermaLink="true">https://scottwillsey.com/slowly-posting-reviews</guid><description>I&apos;m slowly getting media reviews up on the site, and I hope they&apos;re fun for you. 🙂</description><pubDate>Sun, 13 Apr 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve written about my &lt;a href=&quot;https://scottwillsey.com/media-reviews-automation/&quot;&gt;review automation workflow in some detail&lt;/a&gt;, and while I personally find it fascinating, really the point is &lt;a href=&quot;https://scottwillsey.com/reviews/&quot;&gt;the reviews themselves&lt;/a&gt;. I’m slowly getting some up there and will keep adding more slowly and steadily over time.&lt;/p&gt;
&lt;p&gt;Here’s what my current &lt;a href=&quot;https://scottwillsey.com/reviews/music/1/&quot;&gt;Music Reviews page&lt;/a&gt; looks like. The goal is to start adding them in a way that creates a diverse mix of music while I build up the number of reviews available.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/reviews/music/1/&quot;&gt;&lt;img alt=&quot;MusicReviewsWIP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1256&quot; src=&quot;https://scottwillsey.com/_astro/MusicReviewsWIP-fac442de-b5f4-4087-9aa5-f4d215ee7467.DOkqu-g7_1BR6wj.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let me point you again to &lt;a href=&quot;https://birchtree.me/&quot;&gt;Matt Birchler&lt;/a&gt;’s &lt;a href=&quot;https://quickreviews.app/&quot;&gt;Quick Reviews&lt;/a&gt;. I use his iOS app version of this application to generate the reviews and &lt;a href=&quot;https://scottwillsey.com/media-reviews-automation/&quot;&gt;then my Mac takes over from there&lt;/a&gt;! It’s a great workflow, and I like the looks of the results.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/links/#indieweb&quot;&gt;IndieWeb&lt;/a&gt; is where the fun is… if you like the random stuff I throw on my site, think about how to make your own or what you want it to be to try to &lt;a href=&quot;https://www.citationneeded.news/we-can-have-a-different-web/&quot;&gt;make life just a little bit happier&lt;/a&gt; for a minute or two for anyone who stumbles across you. We could all use some good stuff in life right now.&lt;/p&gt;</content:encoded><summary>I&apos;m slowly getting media reviews up on the site, and I hope they&apos;re fun for you. 🙂</summary></item><item><title>Media Reviews Are Now in Search Results</title><link>https://scottwillsey.com/media-reviews-are-now-in-search-results</link><guid isPermaLink="true">https://scottwillsey.com/media-reviews-are-now-in-search-results</guid><description>My media reviews now show up in site search results for easier discovery.</description><pubDate>Tue, 08 Apr 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;When I added a &lt;a href=&quot;https://scottwillsey.com/reviews/&quot;&gt;Reviews&lt;/a&gt; page, I wanted to be able to have individual reviews show up in &lt;a href=&quot;https://scottwillsey.com/search/&quot;&gt;my site search&lt;/a&gt;. Due to some complexities I won’t go into of how Pagefind indexes things and how I optimize my images using the Astro Image component, this was easier said than done – until I remembered the good old HTML &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden&quot;&gt;hidden&lt;/a&gt; global attribute. Then I just made a hidden span and populated it with the image alt text.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;review&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;alttext&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/posts/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;review&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{import&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../../assets/images/posts/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;review&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;alttext&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;      &lt;p&gt;        {          page.data.map((book) =&gt; (            &lt;span hidden=&quot;&quot;&gt;{&amp;#x60;${book.alttext}&amp;#x60;}&lt;/span&gt;            &lt;a href=&quot;&quot;&gt;              &lt;Image                src={import(&amp;#x60;../../../assets/images/posts/${book.review}.png&amp;#x60;)}                alt={&amp;#x60;${book.alttext}&amp;#x60;}              /&gt;            &lt;/a&gt;          ))        }      &lt;/p&gt;    &quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now all my media reviews show up in site seach results!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SearchReviewsResults-839dff80-b68f-4f1c-972a-ee70ca88f0b5.jpg&quot;&gt;&lt;img alt=&quot;SearchReviewsResults&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;956&quot; src=&quot;https://scottwillsey.com/_astro/SearchReviewsResults-839dff80-b68f-4f1c-972a-ee70ca88f0b5.CffO0ncH_Z1sJEsF.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoy the &lt;a href=&quot;https://scottwillsey.com/reviews/&quot;&gt;reviews&lt;/a&gt;, and don’t forget there are separate categories for &lt;a href=&quot;https://scottwillsey.com/reviews/books/1/&quot;&gt;Book Reviews&lt;/a&gt;, &lt;a href=&quot;https://scottwillsey.com/reviews/movies/1/&quot;&gt;Movie Reviews&lt;/a&gt;, &lt;a href=&quot;https://scottwillsey.com/reviews/tv/1/&quot;&gt;TV Show Reviews&lt;/a&gt;, and &lt;a href=&quot;https://scottwillsey.com/reviews/music/1/&quot;&gt;Music Reviews&lt;/a&gt;. I will be actively adding more reviews from this point forward.&lt;/p&gt;</content:encoded><summary>My media reviews now show up in site search results for easier discovery.</summary></item><item><title>Updated Sessions Raycast Script Command, 2025 Edition</title><link>https://scottwillsey.com/updated-sessions-raycast-script-command,-2025-edition</link><guid isPermaLink="true">https://scottwillsey.com/updated-sessions-raycast-script-command,-2025-edition</guid><description>An even NEWER version of my Sessions Raycast script command using Raycast window layouts, Raycast focus sessions, and Coffee for Raycast to keep the screen awake.</description><pubDate>Thu, 27 Mar 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve spoken a couple times about my Sessions Raycast script command, both when &lt;a href=&quot;https://scottwillsey.com/sessions-script-command/&quot;&gt;I originally set it up&lt;/a&gt;, and then again when &lt;a href=&quot;https://scottwillsey.com/updated-sessions-script-command/&quot;&gt;I updated it to use Moom as my window manager&lt;/a&gt;. Well, I’m back to using Raycast as my window manager, and I also use a Raycast focus mode for my podcast session. So here’s your updated Session Raycast script command, 2025 edition.&lt;/p&gt;
&lt;p&gt;You may recall that the purpose of this script command is to just set up my environment in a way that’s suitable for a specific task. It always closes all apps, then opens some core apps, and then opens other apps specific to the session type.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; It also sets audio output and input based on the session type, arranges app windows in a specific way, and either sets &lt;a href=&quot;https://www.raycast.com/mooxl/coffee&quot;&gt;Coffee for Raycast&lt;/a&gt; to Caffinate mode (keep the screen on) or Decaffinate mode (let it sleep when it wants).&lt;/p&gt;
&lt;p&gt;Here’s is the current Sessions script command.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title Session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.icon ../icons/app-mode.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;dropdown&quot;, &quot;placeholder&quot;: &quot;Session&quot;, &quot;data&quot;: [ { &quot;title&quot;: &quot;Home&quot;, &quot;value&quot;: &quot;home&quot; }, { &quot;title&quot;: &quot;IT&quot;, &quot;value&quot;: &quot;it&quot; }, { &quot;title&quot;: &quot;Podcast&quot;, &quot;value&quot;: &quot;podcast&quot; }, { &quot;title&quot;: &quot;Podcast Edit&quot;, &quot;value&quot;: &quot;podcastedit&quot; } ] }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Utils&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Set up a workflow session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://focus/complete&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;raycast://extensions/raycast/system/quit-all-applications&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;CORE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;1Password&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Messages&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mail&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Safari&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;AnyBox&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://extensions/mooxl/coffee/decaffeinate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;$1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;CORE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;]}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;home&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Warp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Microphone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://customWindowManagementCommand?&amp;#x26;name=Home&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;it&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-chrome&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Google Chrome&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Warp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Slack&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Microphone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://customWindowManagementCommand?&amp;#x26;name=IT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Audio Hijack&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Farrago&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Bear&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Notes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Microsoft Teams&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elgato Wave XLR&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Shure Beta 87a &amp;#x26; Farrago&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://customWindowManagementCommand?&amp;#x26;name=Podcasting&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://extensions/mooxl/coffee/caffeinate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://focus/start?goal=Podcast&amp;#x26;categories=podcast&amp;#x26;mode=allow&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcastedit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Logic Pro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Bear&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Finder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Documents/Podcasts/FwB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elgato Wave XLR&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://customWindowManagementCommand?&amp;#x26;name=Edit%20Podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://focus/start?goal=Podcast%20Edit&amp;#x26;categories=podcastedit&amp;#x26;mode=allow&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Session# @raycast.mode fullOutput# Optional parameters:# @raycast.icon ../icons/app-mode.png# @raycast.argument1 { &amp;#x22;type&amp;#x22;: &amp;#x22;dropdown&amp;#x22;, &amp;#x22;placeholder&amp;#x22;: &amp;#x22;Session&amp;#x22;, &amp;#x22;data&amp;#x22;: [ { &amp;#x22;title&amp;#x22;: &amp;#x22;Home&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;home&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;IT&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;it&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;Podcast&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;podcast&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;Podcast Edit&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;podcastedit&amp;#x22; } ] }# @raycast.packageName Utils# Documentation:# @raycast.description Set up a workflow session# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseyopen &amp;#x27;raycast://focus/complete&amp;#x27;open raycast://extensions/raycast/system/quit-all-applicationssleep 3CORE=(1Password Messages Mail Safari AnyBox)open &amp;#x27;raycast://extensions/mooxl/coffee/decaffeinate&amp;#x27;TYPE=$1for value in &amp;#x22;${CORE[@]}&amp;#x22;do    open -a &amp;#x22;$value&amp;#x22;doneif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;home&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-safari&amp;#x27;    open -a Warp    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Speakers&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Microphone&amp;#x22; -t &amp;#x22;input&amp;#x22;    open &amp;#x27;raycast://customWindowManagementCommand?&amp;#x26;name=Home&amp;#x27;        exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;it&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-chrome&amp;#x27;    open -a &amp;#x22;Google Chrome&amp;#x22;    open -a Warp    open -a Slack    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Speakers&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Microphone&amp;#x22; -t &amp;#x22;input&amp;#x22;    open &amp;#x27;raycast://customWindowManagementCommand?&amp;#x26;name=IT&amp;#x27;        exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;podcast&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-safari&amp;#x27;    open -a &amp;#x22;Audio Hijack&amp;#x22;    open -a Farrago    open -a Bear    open -a Notes    open -a &amp;#x22;Microsoft Teams&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Elgato Wave XLR&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Shure Beta 87a &amp;#x26; Farrago&amp;#x22; -t &amp;#x22;input&amp;#x22;    open &amp;#x27;raycast://customWindowManagementCommand?&amp;#x26;name=Podcasting&amp;#x27;    open &amp;#x27;raycast://extensions/mooxl/coffee/caffeinate&amp;#x27;    open &amp;#x27;raycast://focus/start?goal=Podcast&amp;#x26;categories=podcast&amp;#x26;mode=allow&amp;#x27;        exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;podcastedit&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-safari&amp;#x27;    open -a &amp;#x22;Logic Pro&amp;#x22;    open -a Bear    open -a Finder ~/Documents/Podcasts/FwB    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Elgato Wave XLR&amp;#x22;    open &amp;#x27;raycast://customWindowManagementCommand?&amp;#x26;name=Edit%20Podcast&amp;#x27;    open &amp;#x27;raycast://focus/start?goal=Podcast%20Edit&amp;#x26;categories=podcastedit&amp;#x26;mode=allow&amp;#x27;        exitfi&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;When I run the Sessions script command in Raycast, I just choose the session type. The nice thing about Raycast dropdowns is they pre-select the option you chose last time. In the case of the Session script command, that’s not as convenient as it is for some other script commands, but that’s life.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SessionsDropdown-d6401ea3-9aa3-4572-ac8c-6189a3af2d39.jpg&quot;&gt;&lt;img alt=&quot;SessionsDropdown&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;782&quot; src=&quot;https://scottwillsey.com/_astro/SessionsDropdown-d6401ea3-9aa3-4572-ac8c-6189a3af2d39.BmAUAgDy_Z1rPGtA.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Anyway, if you have any questions about this script command or Raycast script commands in general, you know how to find me (hint: &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;Mastodon&lt;/a&gt; or &lt;a href=&quot;https://bsky.app/profile/scottwillsey.com&quot;&gt;Bluesky&lt;/a&gt;).&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I should see if there’s a way to close all apps that aren’t in a list, instead of closing all apps and then re-opening all apps that are in a list. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>An even NEWER version of my Sessions Raycast script command using Raycast window layouts, Raycast focus sessions, and Coffee for Raycast to keep the screen awake.</summary></item><item><title>Creating Drafts in Astro 5</title><link>https://scottwillsey.com/creating-drafts-in-astro</link><guid isPermaLink="true">https://scottwillsey.com/creating-drafts-in-astro</guid><description>I did something I should have done a long time ago and added draft functionality to this website.</description><pubDate>Tue, 25 Mar 2025 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week or so, I started writing a blog post as I sometimes do, this one pertaining to my &lt;a href=&quot;https://scottwillsey.com/media-reviews-automation/&quot;&gt;Automation Workflow for Media Reviews&lt;/a&gt;. Unfortunately, I wanted to preview it as I went along, so I copied it in progress to my git main branch of the local copy of the website.&lt;/p&gt;
&lt;p&gt;You can see where this is going.&lt;/p&gt;
&lt;p&gt;Yes, I updated something else on the website and published it, INCLUDING the partial draft of the blog post I was working on. This wasn’t a super huge deal, except that I use &lt;a href=&quot;https://echofeed.app/&quot;&gt;EchoFeed&lt;/a&gt; to automatically post to &lt;a href=&quot;https://bsky.app/profile/scottwillsey.com&quot;&gt;Bluesky&lt;/a&gt; and &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;Mastodon&lt;/a&gt; whenever I post something new on the site.&lt;/p&gt;
&lt;p&gt;Sigh.&lt;/p&gt;
&lt;p&gt;The good news is that this finally pushed me to add drafts functionality to my site, so that I could have drafts render when running locally in development mode, but not actually get written when doing a site build. It’s a good, basic feature to have.&lt;/p&gt;
&lt;p&gt;Initially I started with the method shared by &lt;a href=&quot;https://jacurtis.com/&quot;&gt;Alex Curtis&lt;/a&gt; in his post &lt;a href=&quot;https://jacurtis.com/notes/astro-draft-posts/&quot;&gt;How to Create a Draft Post in Astro&lt;/a&gt;, but his filter didn’t actually work for me. I think this is because his example was for a different version of Astro, possibly. I wound up using the Astro Docs example for &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/#filtering-collection-queries&quot;&gt;Filtering Content Collection Queries&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Basically, there are three steps to adding draft posts to Astro 5:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add an optional draft data property to your blog post collection in your content.config.ts, as below,&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/content.config.ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;postCollection&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;defineCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;loader&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pattern&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;**/[^_]*.{md,mdx}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./src/content/posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;transform&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;nullable&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;coverAlt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;series&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;draft&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;boolean&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;    z.object({      title: z.string(),      description: z.string(),      link: z.string().optional(),      date: z        .string()        .transform((str) =&gt; new Date(str))        .optional()        .nullable(),      keywords: z.string().array(),      cover: image().optional(),      coverAlt: z.string().optional(),      series: z.string().optional(),      draft: z.boolean().optional(),    }),});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Filter based on this in any page that uses this content collection, &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/#filtering-collection-queries&quot;&gt;the way the Astro Docs show&lt;/a&gt;,&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/[page].astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Post&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/Post.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Pager&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/Pager.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../data/site.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getStaticPaths&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;paginate&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#71b8ff&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;PROD&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;draft&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#71b8ff&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#71b8ff&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;paginate&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pageSize&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;paginationSize&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Posts Page &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;currentPage&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aria-label&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Post list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-pagefind-ignore&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Pager&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {    return import.meta.env.PROD ? data.draft !== true : true;  });  posts = posts.sort(    (a, b) =&gt; new Date(b.data.date).valueOf() - new Date(a.data.date).valueOf(),  );  return paginate(posts, {    pageSize: site.posts.paginationSize,  });}const { page } = Astro.props;const title = site.title;const description = &amp;#x60;Posts Page ${page.currentPage}&amp;#x60;;---&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;And finally, use it in a draft post!&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;Creating Drafts in Astro&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;describe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;2025-03-25T00:10:00-08:00&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;keyword&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f2878d;--1:#800000;--2:#8DDB8C&quot;&gt;draft&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#71b8ff&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;creating-drafts-in-astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;I’ve always wanted to be a writer, and I’ve always wanted to create drafts in Astro that won’t get published until I want them to.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Now I can!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://jacurtis.com/notes/astro-draft-posts/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;---title: Creating Drafts in Astrodescription: describedate: &amp;#x22;2025-03-25T00:10:00-08:00&amp;#x22;keywords: [&amp;#x22;keyword&amp;#x22;]draft: trueslug: &amp;#x22;creating-drafts-in-astro&amp;#x22;---I’ve always wanted to be a writer, and I’ve always wanted to create drafts in Astro that won’t get published until I want them to.[Now I can!](https://jacurtis.com/notes/astro-draft-posts/)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;One more thing though – none of this keeps the post page itself from being rendered during a build. It just keeps anything from linking to it or showing it in a list of posts. This means that it will show up in your RSS feed unless you edit your RSS template to also filter it out.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/rss.xml.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/rss&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sanitize-html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;globalImageUrls&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/StringFormat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../data/site.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;GET&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;postImportResult&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#6CB6FF&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../content/posts/**/*.md&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;eager&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;postImportResult&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;draft&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#71b8ff&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;atom&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://www.w3.org/2005/Atom/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;dc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://purl.org/dc/elements/1.1/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://purl.org/rss/1.0/modules/content/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;}${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;customData&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;summary&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;/summary&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;globalImageUrls&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;compiledContent&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; post.frontmatter.draft !== true)    .sort(      (a, b) =&gt;        new Date(b.frontmatter.date).valueOf() -        new Date(a.frontmatter.date).valueOf(),    );  return rss({    title: site.title,    description: site.description,    site: context.site,    xmlns: {      atom: &amp;#x22;http://www.w3.org/2005/Atom/&amp;#x22;,      dc: &amp;#x22;http://purl.org/dc/elements/1.1/&amp;#x22;,      content: &amp;#x22;http://purl.org/rss/1.0/modules/content/&amp;#x22;,    },    items: posts.map((post) =&gt; ({      title: post.frontmatter.title,      link: &amp;#x60;${site.url}${post.frontmatter.slug}&amp;#x60;,      pubDate: rfc2822(post.frontmatter.date),      description: post.frontmatter.description,      customData: &amp;#x60;&lt;summary&gt;${post.frontmatter.description}&lt;/summary&gt;&amp;#x60;,      content: globalImageUrls(        site.url,        sanitizeHtml(post.compiledContent(), {          allowedTags: sanitizeHtml.defaults.allowedTags.concat([&amp;#x22;img&amp;#x22;]),        }),      ),    })),  });}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s it! Hit me up on &lt;a href=&quot;https://bsky.app/profile/scottwillsey.com&quot;&gt;Bluesky&lt;/a&gt; or &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;Mastodon&lt;/a&gt; if you have any questions.&lt;/p&gt;</content:encoded><summary>I did something I should have done a long time ago and added draft functionality to this website.</summary></item><item><title>Automation Workflow for Media Reviews</title><link>https://scottwillsey.com/media-reviews-automation</link><guid isPermaLink="true">https://scottwillsey.com/media-reviews-automation</guid><description>My automation workflow chain for getting quick reviews of media onto my website.</description><pubDate>Sat, 22 Mar 2025 13:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#updating-the-look-of-my-now-page&quot;&gt;Updating the Look of My /now Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#automating-quick-reviews&quot;&gt;Automating Quick Reviews&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#step-1-quick-reviews&quot;&gt;Step 1: Quick Reviews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#step-2-hazel&quot;&gt;Step 2: Hazel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#step-3-retrobatch&quot;&gt;Step 3: Retrobatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#step-4-python-script&quot;&gt;Step 4: Python Script&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#python-script-part-1-create-markdown-links&quot;&gt;Python Script Part 1: Create Markdown Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#python-script-part-2-archive-all-images-in-the-retrobatch-input-folder&quot;&gt;Python Script Part 2: Archive All Images in the Retrobatch Input Folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#python-script-part-3-delete-all-text-files-in-the-retrobatch-output-folder&quot;&gt;Python Script Part 3: Delete All Text Files in the Retrobatch Output Folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#python-script-part-4-rename-and-move-the-image-files-to-use-on-the-website&quot;&gt;Python Script Part 4: Rename and Move the Image Files to Use on the Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#step-5-profit&quot;&gt;Step 5: Profit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#summarium&quot;&gt;Summarium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;updating-the-look-of-my-now-page&quot;&gt;Updating the Look of My /now Page&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://nownownow.com/about&quot;&gt;now page&lt;/a&gt; is a cool concept by &lt;a href=&quot;https://sive.rs/&quot;&gt;Derek Sivers&lt;/a&gt; for talking about what you’re doing now in your life. I use &lt;a href=&quot;https://scottwillsey.com/now/&quot;&gt;my /now page&lt;/a&gt; slightly differently, to just list things I’ve been reading, drinking, eating, watching, listening to, and sometimes playing recently.&lt;/p&gt;
&lt;p&gt;Initially everything on my now page was bullet lists of text links. This works, and it’s fine, but I also was a little envious of how nice some other people’s media logs looked with artwork for their movies and shows. I’m thinking of &lt;a href=&quot;https://rknight.me/almanac/&quot;&gt;Robb Knight’s Almanac&lt;/a&gt;, Habib Cham’s &lt;a href=&quot;https://www.chamline.net/books/&quot;&gt;Books&lt;/a&gt; page, and &lt;a href=&quot;https://www.coryd.dev/&quot;&gt;Cory Dransfeldt&lt;/a&gt;’s &lt;a href=&quot;https://www.coryd.dev/music/&quot;&gt;Music&lt;/a&gt;, &lt;a href=&quot;https://www.coryd.dev/watching/&quot;&gt;Watching&lt;/a&gt;, and &lt;a href=&quot;https://www.coryd.dev/books/&quot;&gt;Currently Reading&lt;/a&gt; pages, for example.&lt;/p&gt;
&lt;p&gt;As I was rolling how to improve my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page around in the back of my mind, &lt;a href=&quot;https://birchtree.me/&quot;&gt;Matt Birchler&lt;/a&gt; release a neat little iOS app called &lt;a href=&quot;https://quickreviews.app/&quot;&gt;Quick Reviews&lt;/a&gt;. Quick Reviews is based on a web utility he’s had for awhile now which lets you create little images with media reviews, complete with artwork, and share them with people.&lt;/p&gt;
&lt;p&gt;As I played with the iOS app version of Quick Reviews and saw how it exported the images, I realized I could build a workflow around them for incorporating them into my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Most importantly for any change to the page to make it look better was that it not take much more time to update on a regular basis. The text link version was easy – I have scripts that pull my Trakt history for the Movies and TV Shows portions of the page and return formatted markdown bullet list items. All I have to do is paste them where I want them.&lt;/p&gt;
&lt;p&gt;Thanks to the power of scripting and the wonderful array of automation utilities for macOS, I’ve been able to find a way to make updating my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page with Quick Reviews images equally quick and painless. So get ready, because the rest of this article exists to show you how it’s done.&lt;/p&gt;
&lt;p&gt;By the way, I made a handy little video of the automation workflow in action which you can watch here or on &lt;a href=&quot;https://www.youtube.com/watch?v=iK1bnaAoczc&quot;&gt;YouTube&lt;/a&gt;, or jump to the &lt;a href=&quot;#automating-quick-reviews&quot;&gt;detailed workflow description&lt;/a&gt; below to keep reading.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=iK1bnaAoczc&quot;&gt;&lt;iframe width=&quot;560&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/iK1bnaAoczc&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;automating-quick-reviews&quot;&gt;Automating Quick Reviews&lt;/h2&gt;
&lt;h3 id=&quot;step-1-quick-reviews&quot;&gt;Step 1: Quick Reviews&lt;/h3&gt;
&lt;p&gt;The first link in my automation chain is &lt;a href=&quot;https://quickreviews.app/&quot;&gt;Quick Reviews&lt;/a&gt; by &lt;a href=&quot;https://birchtree.me/&quot;&gt;Matt Birchler&lt;/a&gt;. This is an iOS app that lets you choose a piece of media to review and allows you to add artwork, your rating, and your text review to a nicely formatted image.&lt;/p&gt;
&lt;p&gt;First you choose a Media Type (Movie, TV Show, Game, Book, Music, or Other), give it the title of the media, and either add artwork or use Magic Mode to add one if it’s a Movie, TV Show, or Game, and then add your text review and choose a rating. You can customize the text that gets used for ratings to your own liking (&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;⭐&lt;/span&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;⭐&lt;/span&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;⭐&lt;/span&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;⭐&lt;/span&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;⭐&lt;/span&gt; use emoji stars if you want!) at an app level, by the way.&lt;/p&gt;
&lt;p&gt;Next, edit the image colors for background and rating highlight, edit the font and font styles, and  save or export the image. In my case, I use export and share and then AirDrop it to my Mac.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/WritingAReview-C2EE3053-D3DD-4942-9B37-2C10FFD0B9B9.jpg&quot;&gt;&lt;img alt=&quot;WritingAReview&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;918&quot; src=&quot;https://scottwillsey.com/_astro/WritingAReview-C2EE3053-D3DD-4942-9B37-2C10FFD0B9B9.Btlv1985_g2t68.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;step-2-hazel&quot;&gt;Step 2: Hazel&lt;/h3&gt;
&lt;p&gt;When I AirDrop the Quick Reviews image to my Mac, several things happen automatically, thanks in large part to a wonderful Mac utility called &lt;a href=&quot;https://www.noodlesoft.com/&quot;&gt;Hazel&lt;/a&gt;, by Noodlesoft. Hazel does one thing: it watches folders that you tell it to. But then it allows you to perform a ton of different actions on those folders, or files in those folders, based on triggers you specifiy.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/HazelPicturesWorkflow-695698C9-DB44-4B9F-BA7C-E677882B53B5.jpg&quot;&gt;&lt;img alt=&quot;HazelPicturesWorkflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1258&quot; src=&quot;https://scottwillsey.com/_astro/HazelPicturesWorkflow-695698C9-DB44-4B9F-BA7C-E677882B53B5.CrkwqiOh_Z15bs80.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In my case, I have Hazel watch my Downloads folder for incoming images that have the png extension and that have file names containing “PNG image”. These criteria are based on the exported Quick Reviews file name and type. If any files meeting those criteria hit the Downloads folder, they’re moved to &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/code&gt;, renamed in a specific way, and then a Bash script called &lt;code&gt;scottwillsey-media-review-images.sh&lt;/code&gt; is run.&lt;/p&gt;
&lt;p&gt;Here’s the entirety of that script:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;scottwillsey-media-review-images.sh&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:167ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title ScottWillsey Media Review Images&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode silent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.icon ../icons/scottwillsey.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Website&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Resizes and copies images for the ScottWillsey site&apos;s /now page media reviews.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Applications/Retrobatch.app/Contents/MacOS/Retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;--workflow&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/BlogMovieReviewImageResizeWithText.retrobatch&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;wait&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/scottwillsey_review_images.py&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title ScottWillsey Media Review Images# @raycast.mode silent# Optional parameters:# @raycast.icon ../icons/scottwillsey.png# @raycast.packageName Website# Documentation:# @raycast.description Resizes and copies images for the ScottWillsey site&amp;#x27;s /now page media reviews.# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willsey/Applications/Retrobatch.app/Contents/MacOS/Retrobatch --workflow /Users/scott/Scripts/scottwillsey/scottwillsey-images/BlogMovieReviewImageResizeWithText.retrobatch &amp;#x26;wait/Users/scott/Scripts/scottwillsey/scottwillsey-images/scottwillsey_review_images.py&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can see that it’s written as a Raycast script command, which is why all the weird comments are in there, but I don’t run it from Raycast because I let Hazel call it directly when I AirDrop the image.&lt;/p&gt;
&lt;p&gt;First, it runs a Mac app called &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt; with a specific Retrobatch workflow, waits for that to finish, and then runs a Python script.&lt;/p&gt;
&lt;p&gt;Which takes us to Step 3…&lt;/p&gt;
&lt;h3 id=&quot;step-3-retrobatch&quot;&gt;Step 3: Retrobatch&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt; is a stupendously amazing image automation tool from &lt;a href=&quot;https://flyingmeat.com/&quot;&gt;Flying Meat Software&lt;/a&gt;. Its whole job is image batch processing.&lt;/p&gt;
&lt;p&gt;The particular Retrobatch workflow that I run in this case takes images from &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/code&gt;, where Hazel moved them, and creates two copies – one resized to 1000px wide and saved as a png, and the other full-sized but saved as a jpg. Both of these are saved to &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The purpose of having two copies is so that I can display an optimized version in my articles and have those link to the full-sized image if the reader clicks on them – more on this later.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RetrobatchWorkflow-58C216B3-F566-4828-A34A-5C16EDC7137B.jpg&quot;&gt;&lt;img alt=&quot;RetrobatchWorkflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;966&quot; src=&quot;https://scottwillsey.com/_astro/RetrobatchWorkflow-58C216B3-F566-4828-A34A-5C16EDC7137B.-_H3Xb3q_ZXIeEm.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One other important thing this Retrobatch workflow does is to extract the text from the resized image and save that text in a file in the Out folder with the same file name as the corresponding image, except with a .txt extension.&lt;/p&gt;
&lt;p&gt;I need the text from the image to create my image link alt text for the website, and the fact that Retrobatch can extract this for me makes the fully automated nature of this process possible. I don’t have to make a copy of the text while typing my review on the phone and send it to the Mac somehow. It’s literally delivered in the image and extracted on the Mac by Retrobatch. It’s beautiful.&lt;/p&gt;
&lt;p&gt;Now Retrobatch is done. For each review image in &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/code&gt;, there is now a corresponding resized png, full-sized jpg, and text file with the text from the image saved in &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When Retrobatch finishes, the &lt;code&gt;scottwillsey-media-review-images.sh&lt;/code&gt; script that started the Retrobatch workflow moves on to the next step – running a Python script called &lt;code&gt;scottwillsey_review_images.py&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;step-4-python-script&quot;&gt;Step 4: Python Script&lt;/h3&gt;
&lt;p&gt;The Python script is much more involved than the Bash script was. I’m just going to show you the whole thing and then walk though it.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;scottwillsey_review_images.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:116ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/Users/scott/Scripts/python/venv/bin/python&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; shutil&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; pyperclip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; pathlib &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; Path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; uuid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Set paths&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;output_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;input_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;review_images_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Sites/ScottWillsey/Reviews&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;public_image_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/public/images/posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;assets_image_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/assets/images/posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Initialize empty string for file links&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_links &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Generate new UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_uuid &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;uuid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;uuid4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;())&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Loop through files in output directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;alt_text &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Review Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;endswith&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get base name without extension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# create UUID name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;uuid_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; base_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; new_uuid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Look for corresponding text file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;txt_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.png.txt&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;exists&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;txt_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;txt_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;alt_text &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;strip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create markdown link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_links &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;[![&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;alt_text&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](../../assets/images/posts/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;uuid_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.png)](/images/posts/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;uuid_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.jpg)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;file_links&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Copy files to site public images directory and move files from input to review images directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;input_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get base name and extension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ext &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create new filename with UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_filename &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_uuid&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;src_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;input_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Move file to review images directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;dst_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;review_images_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;shutil&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;src_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; dst_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Delete all .txt files in output directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;endswith&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.txt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Move files from output to site src assets images directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get base name and extension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ext &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create new filename with UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_filename &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_uuid&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;src_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; ext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;lower&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;dst_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;assets_image_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; new_filename&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;shutil&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;src_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; dst_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; ext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;lower&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;dst_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;public_image_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; new_filename&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;shutil&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;src_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; dst_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/Users/scott/Scripts/python/venv/bin/pythonimport osimport shutilimport pyperclipfrom pathlib import Pathimport uuid# Set pathsoutput_path = &amp;#x22;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&amp;#x22;input_path = &amp;#x22;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&amp;#x22;review_images_path = &amp;#x22;/Users/scott/Documents/Sites/ScottWillsey/Reviews&amp;#x22;public_image_path = &amp;#x22;/Users/scott/Sites/scottwillsey/public/images/posts&amp;#x22;assets_image_path = &amp;#x22;/Users/scott/Sites/scottwillsey/src/assets/images/posts&amp;#x22;# Initialize empty string for file linksfile_links = &amp;#x22;&amp;#x22;# Generate new UUIDnew_uuid = str(uuid.uuid4())# Loop through files in output directoryfor file in os.listdir(output_path):    alt_text = &amp;#x22;Review Image&amp;#x22;    if file.endswith(&amp;#x22;.png&amp;#x22;):        # Get base name without extension        base_name = os.path.splitext(file)[0]        # create UUID name        uuid_name = base_name + &amp;#x22;-&amp;#x22; + new_uuid        # Look for corresponding text file        txt_file = os.path.join(output_path, f&amp;#x22;{base_name}.png.txt&amp;#x22;)        if os.path.exists(txt_file):            with open(txt_file, &amp;#x22;r&amp;#x22;) as f:                alt_text = f.read().strip().replace(&amp;#x22;\n&amp;#x22;, &amp;#x22; &amp;#x22;)        # Create markdown link        file_links += f&amp;#x22;[![{alt_text}](../../assets/images/posts/{uuid_name}.png)](/images/posts/{uuid_name}.jpg)\n&amp;#x22;# Copy to clipboardpyperclip.copy(file_links)# Copy files to site public images directory and move files from input to review images directoryfor file in os.listdir(input_path):    # Get base name and extension    base_name, ext = os.path.splitext(file)    # Create new filename with UUID    new_filename = f&amp;#x22;{base_name}-{new_uuid}{ext}&amp;#x22;    src_file = os.path.join(input_path, file)    # Move file to review images directory    dst_file = os.path.join(review_images_path, file)    shutil.move(src_file, dst_file)# Delete all .txt files in output directoryfor file in os.listdir(output_path):    if file.endswith(&amp;#x22;.txt&amp;#x22;):        os.remove(os.path.join(output_path, file))# Move files from output to site src assets images directoryfor file in os.listdir(output_path):    # Get base name and extension    base_name, ext = os.path.splitext(file)    # Create new filename with UUID    new_filename = f&amp;#x22;{base_name}-{new_uuid}{ext}&amp;#x22;    src_file = os.path.join(output_path, file)    if ext.lower() == &amp;#x27;.png&amp;#x27;:        dst_file = os.path.join(assets_image_path, new_filename)        shutil.move(src_file, dst_file)    elif ext.lower() == &amp;#x27;.jpg&amp;#x27;:        dst_file = os.path.join(public_image_path, new_filename)        shutil.move(src_file, dst_file)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The gist of the script is simple, although it does several things:&lt;/p&gt;
&lt;h4 id=&quot;python-script-part-1-create-markdown-links&quot;&gt;Python Script Part 1: Create Markdown Links&lt;/h4&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:116ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Set paths&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;output_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;input_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;review_images_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Sites/ScottWillsey/Reviews&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;public_image_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/public/images/posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;assets_image_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/assets/images/posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Initialize empty string for file links&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_links &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Generate new UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_uuid &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;uuid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;uuid4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;())&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Loop through files in output directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;alt_text &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Review Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;endswith&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get base name without extension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# create UUID name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;uuid_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; base_name &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; new_uuid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Look for corresponding text file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;txt_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.png.txt&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;exists&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;txt_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;txt_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:16ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;alt_text &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;strip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create markdown link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_links &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;[![&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;alt_text&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](../../assets/images/posts/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;uuid_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.png)](/images/posts/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;uuid_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.jpg)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;file_links&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;# Set pathsoutput_path = &amp;#x22;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&amp;#x22;input_path = &amp;#x22;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&amp;#x22;review_images_path = &amp;#x22;/Users/scott/Documents/Sites/ScottWillsey/Reviews&amp;#x22;public_image_path = &amp;#x22;/Users/scott/Sites/scottwillsey/public/images/posts&amp;#x22;assets_image_path = &amp;#x22;/Users/scott/Sites/scottwillsey/src/assets/images/posts&amp;#x22;# Initialize empty string for file linksfile_links = &amp;#x22;&amp;#x22;# Generate new UUIDnew_uuid = str(uuid.uuid4())# Loop through files in output directoryfor file in os.listdir(output_path):    alt_text = &amp;#x22;Review Image&amp;#x22;    if file.endswith(&amp;#x22;.png&amp;#x22;):        # Get base name without extension        base_name = os.path.splitext(file)[0]        # create UUID name        uuid_name = base_name + &amp;#x22;-&amp;#x22; + new_uuid        # Look for corresponding text file        txt_file = os.path.join(output_path, f&amp;#x22;{base_name}.png.txt&amp;#x22;)        if os.path.exists(txt_file):            with open(txt_file, &amp;#x22;r&amp;#x22;) as f:                alt_text = f.read().strip().replace(&amp;#x22;\n&amp;#x22;, &amp;#x22; &amp;#x22;)        # Create markdown link        file_links += f&amp;#x22;[![{alt_text}](../../assets/images/posts/{uuid_name}.png)](/images/posts/{uuid_name}.jpg)\n&amp;#x22;# Copy to clipboardpyperclip.copy(file_links)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This creates a UUID to add into the image file names. Then it looks at every file in the Retrobatch output directory (&lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/Out&lt;/code&gt;), checks to see if it’s a png, and gets its base file name if so.&lt;/p&gt;
&lt;p&gt;After getting the png file base name, the script looks for a corresponding txt file, which will contain the extracted review text. If it finds one, it reads the contents of the file to use as image alt text.&lt;/p&gt;
&lt;p&gt;Next, it creates a markdown link for the png image complete with alt text, and a link to the larger jpg image. Then it appends this markdown link to the file_links variable.&lt;/p&gt;
&lt;p&gt;Finally, it copies the complete file_links variable to the clipboard. This results in markdown for the images ready to paste into the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page. The markdown basically looks like this, albeit with a few extra bits of text from the extracted text that I clean up:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:335ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;Severance S1&amp;#x26;2 • 2022 • Man, this thing is weird and wild but also so much deeper than you might think at first. One of the best shows ever. • Loved It!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/posts/PngImage42999A84080-review-6126286a-a138-4551-8892-ad278b0bfa5f.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;/images/posts/PngImage42999A84080-review-6126286a-a138-4551-8892-ad278b0bfa5f.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[![Severance S1&amp;#x26;2 • 2022 • Man, this thing is weird and wild but also so much deeper than you might think at first. One of the best shows ever. • Loved It!](../../assets/images/posts/PngImage42999A84080-review-6126286a-a138-4551-8892-ad278b0bfa5f.png)](/images/posts/PngImage42999A84080-review-6126286a-a138-4551-8892-ad278b0bfa5f.jpg)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h4 id=&quot;python-script-part-2-archive-all-images-in-the-retrobatch-input-folder&quot;&gt;Python Script Part 2: Archive All Images in the Retrobatch Input Folder&lt;/h4&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:97ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Copy files to site public images directory and move files from input to review images directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;input_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get base name and extension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ext &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create new filename with UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_filename &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_uuid&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;src_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;input_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Move file to review images directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;dst_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;review_images_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;shutil&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;src_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; dst_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;# Copy files to site public images directory and move files from input to review images directoryfor file in os.listdir(input_path):    # Get base name and extension    base_name, ext = os.path.splitext(file)    # Create new filename with UUID    new_filename = f&amp;#x22;{base_name}-{new_uuid}{ext}&amp;#x22;    src_file = os.path.join(input_path, file)    # Move file to review images directory    dst_file = os.path.join(review_images_path, file)    shutil.move(src_file, dst_file)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This part is simple. It just renames the images with the UUID included in the file name and moves them from the Retrobatch input folder to a review images archive folder. This is just a folder for me to keep copies of my reviews in, it has nothing to do with generating the website.&lt;/p&gt;
&lt;h4 id=&quot;python-script-part-3-delete-all-text-files-in-the-retrobatch-output-folder&quot;&gt;Python Script Part 3: Delete All Text Files in the Retrobatch Output Folder&lt;/h4&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:50ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Delete all .txt files in output directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;endswith&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.txt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;# Delete all .txt files in output directoryfor file in os.listdir(output_path):    if file.endswith(&amp;#x22;.txt&amp;#x22;):        os.remove(os.path.join(output_path, file))&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Again, very simple. This just deletes all the text files in the Retrobatch output folder. I don’t need them anymore as I have the text in the markdown links.&lt;/p&gt;
&lt;h4 id=&quot;python-script-part-4-rename-and-move-the-image-files-to-use-on-the-website&quot;&gt;Python Script Part 4: Rename and Move the Image Files to Use on the Website&lt;/h4&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:64ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Move files from output to site src assets images directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get base name and extension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ext &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create new filename with UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_filename &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;base_name&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;new_uuid&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;src_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;output_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; ext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;lower&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;dst_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;assets_image_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; new_filename&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;shutil&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;src_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; dst_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; ext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;lower&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;dst_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;public_image_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; new_filename&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;shutil&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;src_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; dst_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;# Move files from output to site src assets images directoryfor file in os.listdir(output_path):    # Get base name and extension    base_name, ext = os.path.splitext(file)    # Create new filename with UUID    new_filename = f&amp;#x22;{base_name}-{new_uuid}{ext}&amp;#x22;    src_file = os.path.join(output_path, file)    if ext.lower() == &amp;#x27;.png&amp;#x27;:        dst_file = os.path.join(assets_image_path, new_filename)        shutil.move(src_file, dst_file)    elif ext.lower() == &amp;#x27;.jpg&amp;#x27;:        dst_file = os.path.join(public_image_path, new_filename)        shutil.move(src_file, dst_file)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This loops through all files in the Retrobatch output folder (since only images remain here) and does the following with each:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gets the base file name and file extension,&lt;/li&gt;
&lt;li&gt;Creates a new filename with the UUID added in between the base file name and extension,&lt;/li&gt;
&lt;li&gt;Moves the image to &lt;code&gt;/Users/scott/Sites/scottwillsey/src/assets/images/posts&lt;/code&gt; with the new UUID-included file name if it’s a png file,&lt;/li&gt;
&lt;li&gt;Or moves the image to &lt;code&gt;/Users/scott/Sites/scottwillsey/public/images/posts&lt;/code&gt; with the new UUID-included file name if it’s a jpg.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s the entirety of the script. Once it’s done, there are no images left in the Retrobatch input and output folders, there are jpg and png images in the correct website source folders for use on the compiled &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page, and there are corresponding Markdown links in the clipboard ready to paste into the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page content source Markdown file.&lt;/p&gt;
&lt;h3 id=&quot;step-5-profit&quot;&gt;Step 5: Profit&lt;/h3&gt;
&lt;p&gt;The results are something like the image below, or actually what you see if you click the link for the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page on the site menu. It’s the one that looks like a clock.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ReviewsAutomationResult-F4F474EA-7E6E-429C-A5F9-A0E81E53703A.jpg&quot;&gt;&lt;img alt=&quot;ReviewsAutomationResult&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1142&quot; src=&quot;https://scottwillsey.com/_astro/ReviewsAutomationResult-F4F474EA-7E6E-429C-A5F9-A0E81E53703A.a1tjZNaq_Z1aR2cF.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are definitely improvements that could be made, but this is a great start, and it’s proof that sometimes things that look like a very manual process can be automated, thanks largely to the great ecosystem of Mac indie programmers who make outstanding irreplaceable utilities like Hazel and Retrobatch.&lt;/p&gt;
&lt;p&gt;If you want to see a comparison of the old style, imageless &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page and the current beautiful one, just look at the image below. On the right is the new, Quick Reviews-ified version, on the left is the old one. Or, to put it another way, on the left is the before now, and on the right is the now now.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/NowOldAndNew-08EE12D0-DF52-425E-9F2C-82F048FD4865.jpg&quot;&gt;&lt;img alt=&quot;NowOldAndNew&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;968&quot; src=&quot;https://scottwillsey.com/_astro/NowOldAndNew-08EE12D0-DF52-425E-9F2C-82F048FD4865.BA84mb9V_ZTCXLH.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;summarium&quot;&gt;Summarium&lt;/h2&gt;
&lt;p&gt;That’s a lot of words, so let’s summarize the process here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scott Willsey creates a review in Quick Reviews on iOS,&lt;/li&gt;
&lt;li&gt;Scott Willsey AirDrops it to his Mac,&lt;/li&gt;
&lt;li&gt;Hazel renames and moves the image and runs a Bash script,&lt;/li&gt;
&lt;li&gt;Bash script runs a Retrobatch workflow and waits for it to finish,&lt;/li&gt;
&lt;li&gt;Retrobatch makes two copies of the image, a full-sized jpg and a smaller png, as well as a text file containing the extracted text from the image,&lt;/li&gt;
&lt;li&gt;Bash script runs a Python script,&lt;/li&gt;
&lt;li&gt;Python script constructs the Markdown links and moves the Retrobatch images into the correct locations for the site to compile and display on the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page,&lt;/li&gt;
&lt;li&gt;Scott Willsey pastes the Markdown links into the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page source Markdown file,&lt;/li&gt;
&lt;li&gt;Scott Willsey says “Damn, that is cool!” and goes to make another cup of coffee.&lt;/li&gt;
&lt;/ol&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;If you’re asking yourself right now “Is this guy going to make EVERY reference to his &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page a hyperlink to it?”, the answer is yes. Yes, I am. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>My automation workflow chain for getting quick reviews of media onto my website.</summary></item><item><title>Menu Updates and Reviews Page</title><link>https://scottwillsey.com/menu-and-reviews</link><guid isPermaLink="true">https://scottwillsey.com/menu-and-reviews</guid><description>A new reviews page and a slightly wider site menu.</description><pubDate>Sun, 23 Feb 2025 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You may have noticed that the site menu has a couple new icons in it. One looks like a timer or stopwatch – that’s a link to the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page, which I’ve had for awhile, but haven’t had a menu link to. The other looks like movie director clapper with a gear on it – that’s a link to a new page: my &lt;a href=&quot;https://scottwillsey.com/reviews&quot;&gt;/reviews&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SiteMenu-31C1EEF3-0248-4FEF-8347-12D0C1144550.jpg&quot;&gt;&lt;img alt=&quot;SiteMenu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;298&quot; src=&quot;https://scottwillsey.com/_astro/SiteMenu-31C1EEF3-0248-4FEF-8347-12D0C1144550.Cme8ca0i_Z1Us2FW.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You may look at both the &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page and the &lt;a href=&quot;https://scottwillsey.com/reviews&quot;&gt;/reviews&lt;/a&gt; page and think “yeah, but they’ve both got these little reviews on them”, and that’s true, but there is a difference. The /now page reviews are the latest only, and some of them (TV series and books, for example) may be things still in progress. These are ephemeral – they’ll drop off as I move on to new stuff.&lt;/p&gt;
&lt;p&gt;The reviews page is only items I’ve finished, and is ALL of the items I’ve finished that I’ve written reviews for. Nothing will drop off here. Eventually, then, I’ll probably need to break each category (Movies, TV Series, Books, Games) off into their own pages so it doesn’t take an hour and a half to load the page. 45 minutes I could live with, 90 minutes not so much.&lt;/p&gt;
&lt;p&gt;I’m working on an article with an accompanying video about my workflow for creating and publishing these reviews. I think you’ll find it interesting to see how much of the process I’ve managed to automate.&lt;/p&gt;</content:encoded><summary>A new reviews page and a slightly wider site menu.</summary></item><item><title>Cool Site Spotlight Raycast Script Command</title><link>https://scottwillsey.com/cool-site-spotlight-script-command</link><guid isPermaLink="true">https://scottwillsey.com/cool-site-spotlight-script-command</guid><description>Using Raycast script commands to automate updating my Cool Site Spotlight.</description><pubDate>Sun, 02 Feb 2025 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I like to highlight different cool or interesting sites by featuring them in my &lt;a href=&quot;https://scottwillsey.com/links/#CoolSiteSpotlight&quot;&gt;Cool Site Spotlight&lt;/a&gt; on my &lt;a href=&quot;https://scottwillsey.com/links/&quot;&gt;links&lt;/a&gt; page. I put a new one up every one or two weeks, and put a link to the last one in the &lt;a href=&quot;https://scottwillsey.com/links/#cool-sites-archive&quot;&gt;Cool Sites Archive&lt;/a&gt; section of the links page.&lt;/p&gt;
&lt;p&gt;The data for the current one is a simple JSON file called spotlight.json, and it looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;spotlight.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://html.earth/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html.earth: Markdown to HTML Converter &amp;#x26; Site Generator&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html.earth is a free site generator that converts Markdown to HTML. It comes with a front matter editor, custom styling field, and import &amp;#x26; export options.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;HtmlDotEarth-5F9FE361-5512-40BF-A78E-468190030F83&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{  &amp;#x22;Site&amp;#x22;: &amp;#x22;https://html.earth/&amp;#x22;,  &amp;#x22;Title&amp;#x22;: &amp;#x22;html.earth: Markdown to HTML Converter &amp;#x26; Site Generator&amp;#x22;,  &amp;#x22;Description&amp;#x22;: &amp;#x22;html.earth is a free site generator that converts Markdown to HTML. It comes with a front matter editor, custom styling field, and import &amp;#x26; export options.&amp;#x22;,  &amp;#x22;Image&amp;#x22;: &amp;#x22;HtmlDotEarth-5F9FE361-5512-40BF-A78E-468190030F83&amp;#x22;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Up until now, when it’s time to spotlight a new site, I’ve been grabbing a markdown link of the site title and URL using &lt;a href=&quot;https://hookproductivity.com/&quot;&gt;Hookmark&lt;/a&gt; and then using the title and URL from that to put in the Title and Site property values. I then run a Raycast script command to rename, resize, and reformat the site screenshot and put it in the appropriate directories in my own site’s local &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt; project. Once I have the image name, I can put it in spotlight.json in the Image property value, minus the file extension, for reasons I’ll write about someday in a separate post.&lt;/p&gt;
&lt;p&gt;Anyway, it’s been a fairly manual process, and I finally got tired of it yesterday. So I wrote a Raycast script command called “New Cool Site Spotlight” to do it for me.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastNewCoolSiteSpotlightScriptCommand-D984CF94-AFA0-4147-9ED3-F89DB39DA721.jpg&quot;&gt;&lt;img alt=&quot;Raycast New Cool Site Spotlight Script Command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1092&quot; src=&quot;https://scottwillsey.com/_astro/RaycastNewCoolSiteSpotlightScriptCommand-D984CF94-AFA0-4147-9ED3-F89DB39DA721.g3SsQZQO_Z2Ydov.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the script command takes one parameter: the URL of the site I want to feature in &lt;a href=&quot;https://scottwillsey.com/links/#CoolSiteSpotlight&quot;&gt;Cool Site Spotlight&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first thing the script command does is look at spotlight.json in its current state and grabs the title and URL of the current site, which it formats into a Markdown link and puts on the clipboard. It also sticks a dash in front of it for good measure, since the list of previous cool sites IS actually a list, and Markdown list elements start with a dash. This is all handled by a function called &lt;code&gt;create_cool_site_archive_link&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;create_cool_site_archive_link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Open the Spotlight JSON file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the &apos;Site&apos; and &apos;Title&apos; values&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;site &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create a markdown link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;markdown_link &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;- [&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;markdown_link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;def create_cool_site_archive_link():    # Open the Spotlight JSON file    SPOTLIGHT_JSON_FILE = &amp;#x27;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&amp;#x27;    with open(SPOTLIGHT_JSON_FILE, &amp;#x27;r&amp;#x27;) as f:        data = json.load(f)    # Get the &amp;#x27;Site&amp;#x27; and &amp;#x27;Title&amp;#x27; values    site = data.get(&amp;#x27;Site&amp;#x27;)    title = data.get(&amp;#x27;Title&amp;#x27;)    # Create a markdown link    markdown_link = f&amp;#x27;- [{title}]({site})&amp;#x27;    pyperclip.copy(markdown_link)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The script command then calls a function named &lt;code&gt;get_page_info&lt;/code&gt; which uses the URL to grab the page and extract its title and description.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get_page_info&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the title and description from the page&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;response &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; requests&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;soup &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;BeautifulSoup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html.parser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; soup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;text&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;description &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; soup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;description &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; description &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; description&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;def get_page_info(url):    # Get the title and description from the page    response = requests.get(url)    soup = BeautifulSoup(response.text, &amp;#x27;html.parser&amp;#x27;)    title = soup.find(&amp;#x27;title&amp;#x27;).text    description = soup.find(&amp;#x27;meta&amp;#x27;, {&amp;#x27;name&amp;#x27;: &amp;#x27;description&amp;#x27;})    description = description[&amp;#x27;content&amp;#x27;] if description else None    return title, description&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Finally, the script command calls &lt;code&gt;write_spotlight_json&lt;/code&gt;, which replaces the contents of spotlight.json with the new information.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;write_spotlight_json&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create the JSON for the new Cool Site Spotlight entry&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;IMAGE_DIR&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;png_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;f &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; f &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#6CB6FF&quot;&gt;IMAGE_DIR&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;endswith&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; png_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;png_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;png_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;entry &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; png_file&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# If all values are present, write the JSON to the file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;dump&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;indent&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; entry&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;def write_spotlight_json(title, description, url):    # Create the JSON for the new Cool Site Spotlight entry    IMAGE_DIR = &amp;#x27;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&amp;#x27;    SPOTLIGHT_JSON_FILE = &amp;#x27;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&amp;#x27;    png_file = next((f for f in os.listdir(IMAGE_DIR) if f.endswith(&amp;#x27;.png&amp;#x27;)), None)    if png_file:        png_file = os.path.splitext(png_file)[0]    entry = {        &amp;#x22;Site&amp;#x22;: url,        &amp;#x22;Title&amp;#x22;: title,        &amp;#x22;Description&amp;#x22;: description,        &amp;#x22;Image&amp;#x22;: png_file    }    # If all values are present, write the JSON to the file    if all(entry.values()):        with open(SPOTLIGHT_JSON_FILE, &amp;#x27;w&amp;#x27;) as f:            json.dump(entry, f, indent=4)    return entry&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;One interesting thing you might notice is that it looks in &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/code&gt; for any image file that ends in &lt;code&gt;.png&lt;/code&gt;, which it then extracts the file name minus the extension from. Once it’s done that, it creates a dictionary named &lt;code&gt;entry&lt;/code&gt;. If all keys in &lt;code&gt;entry&lt;/code&gt; have corresponding values, it writes the dictionary as JSON into spotlight.json, replacing whatever was there previously.&lt;/p&gt;
&lt;p&gt;Here’s the full New Cool Site Spotlight Raycast script command:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;new-cool-site-spotlight.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/Users/scott/Scripts/python/venv/bin/python&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title New Cool Site Spotlight&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;text&quot;, &quot;placeholder&quot;: &quot;Cool Site URL&quot; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Website&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Create the JSON for Cool Site Spotlight for scottwillsey.com from a URL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; sys&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; pyperclip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; requests&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; bs4 &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; BeautifulSoup&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;url &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; sys&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;argv&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;create_cool_site_archive_link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Open the Spotlight JSON file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the &apos;Site&apos; and &apos;Title&apos; values&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;site &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create a markdown link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;markdown_link &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;- [&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;markdown_link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get_page_info&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the title and description from the page&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;response &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; requests&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;soup &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;BeautifulSoup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html.parser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; soup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;text&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;description &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; soup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;description &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; description &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; description&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;write_spotlight_json&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create the JSON for the new Cool Site Spotlight entry&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;IMAGE_DIR&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;png_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;f &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; f &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;listdir&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#6CB6FF&quot;&gt;IMAGE_DIR&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;endswith&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; png_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;png_file &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;png_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;entry &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; png_file&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# If all values are present, write the JSON to the file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#6CB6FF&quot;&gt;SPOTLIGHT_JSON_FILE&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;dump&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;indent&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; entry&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;create_cool_site_archive_link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; description &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get_page_info&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;title &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;sys&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;write_spotlight_json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/Users/scott/Scripts/python/venv/bin/python# Required parameters:# @raycast.schemaVersion 1# @raycast.title New Cool Site Spotlight# @raycast.mode fullOutput# Optional parameters:# @raycast.argument1 { &amp;#x22;type&amp;#x22;: &amp;#x22;text&amp;#x22;, &amp;#x22;placeholder&amp;#x22;: &amp;#x22;Cool Site URL&amp;#x22; }# @raycast.packageName Website# Documentation:# @raycast.description Create the JSON for Cool Site Spotlight for scottwillsey.com from a URL# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseyimport sysimport jsonimport pyperclipimport requestsfrom bs4 import BeautifulSoupimport osurl = sys.argv[1]def create_cool_site_archive_link():    # Open the Spotlight JSON file    SPOTLIGHT_JSON_FILE = &amp;#x27;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&amp;#x27;    with open(SPOTLIGHT_JSON_FILE, &amp;#x27;r&amp;#x27;) as f:        data = json.load(f)    # Get the &amp;#x27;Site&amp;#x27; and &amp;#x27;Title&amp;#x27; values    site = data.get(&amp;#x27;Site&amp;#x27;)    title = data.get(&amp;#x27;Title&amp;#x27;)    # Create a markdown link    markdown_link = f&amp;#x27;- [{title}]({site})&amp;#x27;    pyperclip.copy(markdown_link)def get_page_info(url):    # Get the title and description from the page    response = requests.get(url)    soup = BeautifulSoup(response.text, &amp;#x27;html.parser&amp;#x27;)    title = soup.find(&amp;#x27;title&amp;#x27;).text    description = soup.find(&amp;#x27;meta&amp;#x27;, {&amp;#x27;name&amp;#x27;: &amp;#x27;description&amp;#x27;})    description = description[&amp;#x27;content&amp;#x27;] if description else None    return title, descriptiondef write_spotlight_json(title, description, url):    # Create the JSON for the new Cool Site Spotlight entry    IMAGE_DIR = &amp;#x27;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&amp;#x27;    SPOTLIGHT_JSON_FILE = &amp;#x27;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&amp;#x27;    png_file = next((f for f in os.listdir(IMAGE_DIR) if f.endswith(&amp;#x27;.png&amp;#x27;)), None)    if png_file:        png_file = os.path.splitext(png_file)[0]    entry = {        &amp;#x22;Site&amp;#x22;: url,        &amp;#x22;Title&amp;#x22;: title,        &amp;#x22;Description&amp;#x22;: description,        &amp;#x22;Image&amp;#x22;: png_file    }    # If all values are present, write the JSON to the file    if all(entry.values()):        with open(SPOTLIGHT_JSON_FILE, &amp;#x27;w&amp;#x27;) as f:            json.dump(entry, f, indent=4)    return entrycreate_cool_site_archive_link()title, description = get_page_info(url)if not (title and description):    sys.exit(1)print(write_spotlight_json(title, description, url))&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You may still have questions about the image file, such as how I create it, why it’s in a directory called &lt;code&gt;/Users/scott/Scripts/scottwillsey/scottwillsey-images/In&lt;/code&gt;, and what I mean when I say I rename and reformat it first. You may also wonder why all that isn’t part of THIS script command intead of being something I do separately still. I’ll write about that soon.&lt;/p&gt;
&lt;p&gt;In the meantime, I’ve gone from manually tweaking a JSON file with multiple copy and paste edits when I want to update &lt;a href=&quot;https://scottwillsey.com/links/#CoolSiteSpotlight&quot;&gt;Cool Site Spotlight&lt;/a&gt; to simply copying a URL from the browser and running a Raycast script command by executing a keyboard command. It’s so much nicer now!&lt;/p&gt;</content:encoded><summary>Using Raycast script commands to automate updating my Cool Site Spotlight.</summary></item><item><title>SSH Connections in Visual Studio Code</title><link>https://scottwillsey.com/vscode-ssh</link><guid isPermaLink="true">https://scottwillsey.com/vscode-ssh</guid><description>Use alternate ssh configs to execute remote commands for ssh connections in Visual Studio Code.</description><pubDate>Sun, 26 Jan 2025 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I needed to work on some script files on a server and wanted to edit them in Visual Studio Code. Visual Studio Code supports remote connections, including ssh connections. Unfortunately, some of these files require root privileges, and I can’t and don’t want to be able to ssh into this server as root.&lt;/p&gt;
&lt;p&gt;What about &lt;code&gt;sudo su&lt;/code&gt; once you’re logged in, you say?&lt;/p&gt;
&lt;p&gt;The good news about configuring ssh connections is that you can set up RemoteCommand entries in your ssh config that will be executed upon connection. &lt;code&gt;sudo su&lt;/code&gt; is a command. And the good news about Visual Studio Code is that it lets you specify an ssh config file to use for its ssh connections, so you can customize your Visual Studio Code ssh connections to perform a &lt;code&gt;sudo su&lt;/code&gt; upon connection, if needed, while keeping your normal ssh config file free of such silliness so that this doesn’t happen in your normal terminal ssh sessions.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;First create a copy of your ~/.ssh/config file and name it something obvious. Mine is named config_vscode.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ll&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;total&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;168&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwx------@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;640B&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;08:47&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwxr-xr-x@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;76&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;2.4K&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;09:02&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;..&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;6.0K&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Dec&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;18&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2023&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.DS_Store&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwx------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;96B&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;08:47&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;1Password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;1.7K&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;14:32&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;1.7K&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Dec&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;20:26&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;config_por&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;948B&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;14:58&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;config_vscode&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;lltotal 168drwx------@ 20 scott  staff   640B Jan 21 08:47 .drwxr-xr-x@ 76 scott  staff   2.4K Jan 21 09:02 ..-rw-r--r--@  1 scott  staff   6.0K Dec 18  2023 .DS_Storedrwx------   3 scott  staff    96B Jan 21 08:47 1Password-rw-------@  1 scott  staff   1.7K Jan 10 14:32 config-rw-------@  1 scott  staff   1.7K Dec 20 20:26 config_por-rw-------@  1 scott  staff   948B Jan 10 14:58 config_vscode&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now edit your newly created created config_vscode (or whatever) file and add the following to the end of connections that need root access to files in Visual Studio Code:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;RemoteCommand&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;su&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;RemoteCommand sudo su&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This means a given connection that looks like this in ~/.ssh/config:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/config&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Host&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;server1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;HostName&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;server1.domain.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Port&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;User&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;serverperson&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentityFile&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/.ssh/server1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentitiesOnly&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Host server1 HostName server1.domain.com Port 22 User serverperson IdentityFile ~/.ssh/server1 IdentitiesOnly yes&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Should look like this in ~/.ssh/config_vscode:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/config_vscode&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Host&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;server1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;HostName&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;server1.domain.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Port&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;User&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;serverperson&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentityFile&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/.ssh/server1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentitiesOnly&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;RemoteCommand&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;su&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Host server1 HostName server1.domain.com Port 22 User serverperson IdentityFile ~/.ssh/server1 IdentitiesOnly yes RemoteCommand sudo su&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Then in your Visual Studio Code user settings.json file, make sure to point to your custom ssh config and set enableRemoteCommand to true.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;settings.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;remote.SSH.configFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/.ssh/config_vscode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;remote.SSH.enableRemoteCommand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&amp;#x22;remote.SSH.configFile&amp;#x22;: &amp;#x22;/Users/scott/.ssh/config_vscode&amp;#x22;,&amp;#x22;remote.SSH.enableRemoteCommand&amp;#x22;: true,&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Also, in your Visual Studio Code defaultSettings.json, make sure the following is set to true:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;defaultSettings.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;remote.SSH.useLocalServer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&amp;#x22;remote.SSH.useLocalServer&amp;#x22;: true,&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Then make your ssh connection in Visual Studio Code and be amazed as you now have root powers on files that previously refused to submit to your will.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/VscodeSSH-A61A9FC9-989F-4593-84D1-4AB07BD0D702.jpg&quot;&gt;&lt;img alt=&quot;Vscode SSH connections&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;656&quot; src=&quot;https://scottwillsey.com/_astro/VscodeSSH-A61A9FC9-989F-4593-84D1-4AB07BD0D702.BcjPEuGg_ZGdHeW.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;This assumes that your login user is in your server’s sudoers list and that sudoers don’t need to enter passwords to perform a &lt;code&gt;sudo su&lt;/code&gt;. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Use alternate ssh configs to execute remote commands for ssh connections in Visual Studio Code.</summary></item><item><title>The Notey McNoteness of Raycast Notes</title><link>https://scottwillsey.com/raycast-notes</link><guid isPermaLink="true">https://scottwillsey.com/raycast-notes</guid><description>Raycast Notes is a great context-based scratchpad that verges on having slightly too many features.</description><pubDate>Wed, 08 Jan 2025 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Raycast Floating Notes started off as a very simple text window you could dump stuff into. That’s all it was. One window, one note, and anything you put in there was always going to be there when you opened Raycast Floating Notes again. Then late last year, Raycast introduced &lt;a href=&quot;https://www.raycast.com/core-features/notes&quot;&gt;Raycast Notes&lt;/a&gt;, a Floating Notes update and replacement (&lt;a href=&quot;https://www.raycast.com/blog/raycast-notes&quot;&gt;Meet the new Raycast Notes - Raycast Blog&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RNNoteWithCode-FC060658-C8C0-4635-B17E-146E4CEBF4CD.jpg&quot;&gt;&lt;img alt=&quot;Raycast Notes Window&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;2162&quot; src=&quot;https://scottwillsey.com/_astro/RNNoteWithCode-FC060658-C8C0-4635-B17E-146E4CEBF4CD.CbD-cyt4_ev1ix.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Raycast Notes is a big upgrade over Floating Notes for the simple reason that you can keep multiple notes… something Floating Notes just couldn’t do. Browse your notes and select the note to view using the menu icon at the top of the current note, or use ⌘P to pop up the list.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RNNoteList-FC060658-C8C0-4635-B17E-146E4CEBF4CD.jpg&quot;&gt;&lt;img alt=&quot;Raycast Notes Note List&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;2162&quot; src=&quot;https://scottwillsey.com/_astro/RNNoteList-FC060658-C8C0-4635-B17E-146E4CEBF4CD.DlI8VLPa_2k8ryL.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also perform a bunch of actions in/on notes, such as window auto-sizing, zoom, copying, formatting, searching, creating a quicklink to the note, all with keyboard shortcuts, by clicking the ⌘ icon or using the ⌘K keyboard shortcut.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RNActions-FC060658-C8C0-4635-B17E-146E4CEBF4CD.jpg&quot;&gt;&lt;img alt=&quot;Raycast Notes Actions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;2210&quot; src=&quot;https://scottwillsey.com/_astro/RNActions-FC060658-C8C0-4635-B17E-146E4CEBF4CD.Dx0dIp6I_2uCzKy.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here’s the catch, though, at least for me – people who use Raycast want Raycast Notes to become the be-all, end-all of notes apps for them. There are people who genuinely want to replace Obsidian, Apple Notes, or Notion with Raycast Notes, and this has led to some minor annoyances for me. I don’t like the fact that pasting a URL into a note in Raycast Notes auto-formats it as a markdown link. Most of the time I just want a text link that I can see and copy as plaintext.&lt;/p&gt;
&lt;p&gt;I understand why people want Raycast Notes to do all these things and have all these features, but honestly for me, I want a scratchpad, not a word processor. Raycast Notes is never going to replace Notion, Apple Notes, or Bear for me. It just can’t, and it’s going to be way too clunky if Raycast tries to do that.&lt;/p&gt;
&lt;p&gt;I did learn that there’s a way to at least copy the links that Raycast Notes insists on formatting into markdown back out of the note as plaintext though. Highlight the link, hit ⇧⌘C to pop up the “Copy Selected Text As” menu, and choose “Plain Text”.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RNCopyTextAs-FC060658-C8C0-4635-B17E-146E4CEBF4CD.jpg&quot;&gt;&lt;img alt=&quot;Raycast Notes Copy Text As&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1324&quot; src=&quot;https://scottwillsey.com/_astro/RNCopyTextAs-FC060658-C8C0-4635-B17E-146E4CEBF4CD.sDVjUjLv_46Dfk.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aside from little quibbles like that, I do use Raycast Notes all the time to capture quick info or keep things I need floating on my screen while I work. It’s very much a quick reference, context-based tool for me, and for that use case, I do appreciate it.&lt;/p&gt;
&lt;p&gt;Just quit trying to make it into the Microsoft Word of Markdown editors, people. &lt;span role=&quot;img&quot; aria-label=&quot;smiling face with open mouth &amp;#x26; smiling eyes&quot;&gt;😄&lt;/span&gt;&lt;/p&gt;</content:encoded><summary>Raycast Notes is a great context-based scratchpad that verges on having slightly too many features.</summary></item><item><title>aichat Config for OpenAI and Anthropic APIs</title><link>https://scottwillsey.com/aichat-model-config</link><guid isPermaLink="true">https://scottwillsey.com/aichat-model-config</guid><description>Configuring the aichat LLM CLI tool for OpenAI and Anthropic model use.</description><pubDate>Mon, 30 Dec 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is a fascinating LLM CLI tool called &lt;a href=&quot;https://github.com/sigoden/aichat&quot;&gt;aichat&lt;/a&gt; that lets you use all kinds of LLM models in the command line, including REPL mode, RAG mode (feeding it your documents and files of choice to use as a knowledgebase), and much more.&lt;/p&gt;
&lt;p&gt;I was a little confused about how to configure it to give me a choice of OpenAI and Anthropic LLM models though. I kept breaking the config and generating error messages. Finally I stumbled across a post in the aichat repo’s closed issues that explained for OpenAI and Anthropic, you can configure their API and type information and skip configuring any model information. That way aichat will pull the list of available models from each API for you.&lt;/p&gt;
&lt;p&gt;Here’s what my config looks like now:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame is-terminal has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/Library/Application Support/aichat/config.yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;model:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;claude:claude-3-5-sonnet-latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;stream:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;save:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;wrap:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;85&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;wrap_code:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;clients:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;type:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;openai&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;api_key:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;type:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;api_key:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;model: claude:claude-3-5-sonnet-lateststream: truesave: truewrap: 85wrap_code: falseclients:- type: openai  api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx- type: claude  api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can see I default to the Claude 3.5 Sonnet (latest) model. The nomenclature for the value of specified model is &lt;code&gt;type:model-name&lt;/code&gt;. Then I have a clients section which lists two types of models: OpenAI and Claude (Anthropic).&lt;/p&gt;
&lt;p&gt;Here’s the default Claude 3.5 Sonnet (which is notoriously shy about answering questions about model information):&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Midnight:~&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;aichat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;what model are you using?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;I&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;&apos;m Claude, an AI assistant created by Anthropic. I aim to be direct and honest in my&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;communications, including about what I am.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@Midnight:~ ➜ aichat &amp;#x22;what model are you using?&amp;#x22;I&amp;#x27;m Claude, an AI assistant created by Anthropic. I aim to be direct and honest in mycommunications, including about what I am.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;But I could also specify a model manually, or set it in an environment variable:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Midnight:~&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;aichat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-m&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;openai:gpt-4o&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;What LLM model are you using?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;I&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;am&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;based&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;OpenAI&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s GPT-4 model.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@Midnight:~ ➜ aichat -m openai:gpt-4o &amp;#x22;What LLM model are you using?&amp;#x22;I am based on OpenAI&amp;#x27;s GPT-4 model.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;And in aichat REPL mode, you can get a list of models to choose from with the &lt;code&gt;.model ⇥&lt;/code&gt; command (that’s .model followed by a space and a tab).&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Midnight:~&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;aichat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Welcome&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;aichat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.26.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Type&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.help&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;additional&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;help.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;.model&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#664f20;--2:#f69f53&quot;&gt;openai:gpt-4o&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#065f3e;--2:#71b8ff&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#065f3e;--2:#71b8ff&quot;&gt;16384&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#664f20;--2:#f69f53&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#065f3e;--2:#71b8ff&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:gpt-4o-2024-11-20&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16384&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:gpt-4o-2024-08-06&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16384&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:chatgpt-4o-latest&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16384&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:gpt-4o-mini&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16384&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;0.15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.6&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:gpt-4-turbo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:o1-preview&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;32768&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;60&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:o1-mini&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                       &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;65536&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:o1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;128000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;openai:gpt-3.5-turbo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16385&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-5-sonnet-latest&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8192&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-5-sonnet-20241022&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8192&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-5-haiku-latest&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8192&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-5-haiku-20241022&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8192&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-opus-20240229&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;75&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-sonnet-20240229&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;claude:claude-3-haiku-20240307&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200000&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.25&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;👁&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⚒&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; | .modelopenai:gpt-4o                        128000 /    16384  |     2.5 /     10    👁 ⚒openai:gpt-4o-2024-11-20             128000 /    16384  |     2.5 /     10    👁 ⚒openai:gpt-4o-2024-08-06             128000 /    16384  |     2.5 /     10    👁 ⚒openai:chatgpt-4o-latest             128000 /    16384  |       5 /     15    👁 ⚒openai:gpt-4o-mini                   128000 /    16384  |    0.15 /    0.6    👁 ⚒openai:gpt-4-turbo                   128000 /     4096  |      10 /     30    👁 ⚒openai:o1-preview                    128000 /    32768  |      15 /     60openai:o1-mini                       128000 /    65536  |       3 /     12openai:o1                            128000 /        -  |      15 /     60    👁 ⚒openai:gpt-3.5-turbo                  16385 /     4096  |     0.5 /    1.5      ⚒claude:claude-3-5-sonnet-latest      200000 /     8192  |       3 /     15    👁 ⚒claude:claude-3-5-sonnet-20241022    200000 /     8192  |       3 /     15    👁 ⚒claude:claude-3-5-haiku-latest       200000 /     8192  |     0.8 /      4    👁 ⚒claude:claude-3-5-haiku-20241022     200000 /     8192  |     0.8 /      4    👁 ⚒claude:claude-3-opus-20240229        200000 /     4096  |      15 /     75    👁 ⚒claude:claude-3-sonnet-20240229      200000 /     4096  |       3 /     15    👁 ⚒claude:claude-3-haiku-20240307       200000 /     4096  |    0.25 /   1.25    👁 ⚒&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Arrow up and down to select the model you want and then hit return. This basically does the same as you typing &lt;code&gt;.model type:model-name&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Midnight:~&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;aichat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Welcome&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;aichat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.26.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Type&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.help&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;additional&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;help.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; .model openai:gpt-4o&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; what LLM model are you&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;I&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;am&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;based&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;OpenAI&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s GPT-4.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; .model openai:gpt-4o&gt; what LLM model are you?I am based on OpenAI&amp;#x27;s GPT-4.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;There’s a lot that aichat can do that I haven’t even poked at yet. Honestly, I don’t have time and probably use cases to dig into it much more in the very near term, but it is definitely a very comprehensive CLI tool for LLM use.&lt;/p&gt;</content:encoded><summary>Configuring the aichat LLM CLI tool for OpenAI and Anthropic model use.</summary></item><item><title>Default Apps December 2024</title><link>https://scottwillsey.com/default-apps-2024</link><guid isPermaLink="true">https://scottwillsey.com/default-apps-2024</guid><description>My 2024 entrant in Robb Knight&apos;s App Defaults, inspired by Hemispheric Views 097 Duel of the Defaults.</description><pubDate>Mon, 23 Dec 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Once upon a time,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; the &lt;a href=&quot;https://hemisphericviews.com&quot;&gt;Hemispheric Views podcast&lt;/a&gt; held the first ever &lt;a href=&quot;https://listen.hemisphericviews.com/097&quot;&gt;Duel of the Defaults&lt;/a&gt; in which they decided who was the winner at using the most default apps for several categories. Then &lt;a href=&quot;https://rknight.me&quot;&gt;Robb Knight&lt;/a&gt; took it to 11 with his &lt;a href=&quot;https://defaults.rknight.me&quot;&gt;App Defaults&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;In the continued spirit of blogging about one’s default apps, here is my updated list for 2024.&lt;/p&gt;
&lt;h2 id=&quot;official-categories&quot;&gt;Official Categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;postbox&quot;&gt;📮&lt;/span&gt; Mail Server
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fastmail.com&quot;&gt;Fastmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mail.google.com/&quot;&gt;Gmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://outlook.live.com&quot;&gt;Outlook&lt;/a&gt; for business&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;incoming envelope&quot;&gt;📨&lt;/span&gt; Mail Client
&lt;ul&gt;
&lt;li&gt;Apple Mail&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://outlook.live.com&quot;&gt;Outlook&lt;/a&gt; for business&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;memo&quot;&gt;📝&lt;/span&gt; Notes
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.notion.so/&quot;&gt;Notion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Notes for family note sharing&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; for all my writing and podcast show notes&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raycast.com&quot;&gt;Raycast&lt;/a&gt; Floating Notes Window&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;white heavy check mark&quot;&gt;✅&lt;/span&gt; To-Do
&lt;ul&gt;
&lt;li&gt;Reminders App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;camera&quot;&gt;📷&lt;/span&gt; iPhone Photo Shooting
&lt;ul&gt;
&lt;li&gt;iOS Camera&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🟦&lt;/span&gt; Photo Management
&lt;ul&gt;
&lt;li&gt;Photos App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;calendar&quot;&gt;📅&lt;/span&gt; Calendar
&lt;ul&gt;
&lt;li&gt;Apple Calendar&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://calendarbridge.com/&quot;&gt;CalendarBridge&lt;/a&gt; for work calendar sync and scheduling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;open file folder&quot;&gt;📂&lt;/span&gt; Cloud File Storage
&lt;ul&gt;
&lt;li&gt;iCloud Drive&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;open book&quot;&gt;📖&lt;/span&gt; RSS
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://reeder.app/&quot;&gt;Reeder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://reeder.app/classic/&quot;&gt;Reeder Classic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;👩‍🦲&lt;/span&gt; Contacts
&lt;ul&gt;
&lt;li&gt;Apple Contacts App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;globe with meridians&quot;&gt;🌐&lt;/span&gt; Browser
&lt;ul&gt;
&lt;li&gt;Safari, Chrome for web work&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;speech balloon&quot;&gt;💬&lt;/span&gt; Chat
&lt;ul&gt;
&lt;li&gt;Messages, Signal, Discord, Slack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bookmark&quot;&gt;🔖&lt;/span&gt; Bookmarks
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://anybox.app/&quot;&gt;Anybox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bookmark tabs&quot;&gt;📑&lt;/span&gt; Read It Later
&lt;ul&gt;
&lt;li&gt;Safari Read Later&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;scroll&quot;&gt;📜&lt;/span&gt; Word Processing
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; for all my writing and podcast show notes&lt;/li&gt;
&lt;li&gt;Pages&lt;/li&gt;
&lt;li&gt;Google Docs&lt;/li&gt;
&lt;li&gt;Microsoft Word&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;chart increasing&quot;&gt;📈&lt;/span&gt; Spreadsheets
&lt;ul&gt;
&lt;li&gt;Excel &lt;em&gt;(I’m sorry, but Numbers is the most useless excuse for a spreadsheet app I’ve ever seen)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bar chart&quot;&gt;📊&lt;/span&gt; Presentations
&lt;ul&gt;
&lt;li&gt;Keynote&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;shopping cart&quot;&gt;🛒&lt;/span&gt; Shopping List
&lt;ul&gt;
&lt;li&gt;Reminders&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;fork and knife&quot;&gt;🍴&lt;/span&gt; Meal Planning &amp;#x26; Recipes
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mela.recipes&quot;&gt;Mela&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;money bag&quot;&gt;💰&lt;/span&gt; Budgeting and Personal Finance
&lt;ul&gt;
&lt;li&gt;Spreadsheet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;newspaper&quot;&gt;📰&lt;/span&gt; News
&lt;ul&gt;
&lt;li&gt;RSS&lt;/li&gt;
&lt;li&gt;Mastodon&lt;/li&gt;
&lt;li&gt;BlueSky&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;musical note&quot;&gt;🎵&lt;/span&gt; Music
&lt;ul&gt;
&lt;li&gt;Apple Music&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;microphone&quot;&gt;🎤&lt;/span&gt; Podcasts
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://overcast.fm&quot;&gt;Overcast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;locked with key&quot;&gt;🔐&lt;/span&gt; Password Management
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://1password.com&quot;&gt;1Password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Passwords/Keychain&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;additional-categories&quot;&gt;Additional Categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🧑&lt;/span&gt;‍&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; Programming &amp;#x26; Text Manipulation
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.barebones.com/products/bbedit/&quot;&gt;BBEdit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Xcode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; Terminal
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.warp.dev&quot;&gt;Warp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;camera with flash&quot;&gt;📸&lt;/span&gt; Photo Editing
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://affinity.serif.com/en-us/photo/&quot;&gt;Affinity Photo 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flyingmeat.com/acorn/&quot;&gt;Acorn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;large blue diamond&quot;&gt;🔷&lt;/span&gt; Vector Graphics
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://affinity.serif.com/en-us/designer/&quot;&gt;Affinity Designer 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🧠&lt;/span&gt; AI
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raycast.com/pro&quot;&gt;Raycast AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://copilot.github.com&quot;&gt;GitHub Copilot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;November 2nd, 2023, in fact &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>My 2024 entrant in Robb Knight&apos;s App Defaults, inspired by Hemispheric Views 097 Duel of the Defaults.</summary></item><item><title>BBEdit for Log Analysis</title><link>https://scottwillsey.com/bbedit-logfiles</link><guid isPermaLink="true">https://scottwillsey.com/bbedit-logfiles</guid><description>BBEdit is not my choice of code editor or writing app, but for logfile analysis, it&apos;s the best.</description><pubDate>Thu, 19 Dec 2024 20:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Long-time Mac users will undoubtedly have heard of &lt;a href=&quot;https://www.barebones.com/products/bbedit/index.html&quot;&gt;BBEdit&lt;/a&gt;. BBEdit is the favorite Mac text editor of many old Mac users&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; for various types of writing, including programming, notes, articles, and basically any type of writing Mac nerds can do.&lt;/p&gt;
&lt;p&gt;Personally, I wouldn’t program using BBEdit. &lt;a href=&quot;https://code.visualstudio.com&quot;&gt;Visual Studio Code&lt;/a&gt; and offshoots like &lt;a href=&quot;https://www.cursor.com&quot;&gt;Cursor&lt;/a&gt; are much better for that. I wouldn’t write this blog post in it. That’s what I use &lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; for. And, in my humble-ish opinion, they’re much better at those tasks than BBEdit is.&lt;/p&gt;
&lt;p&gt;But there is a specific use that BBEdit can’t be topped for on the Mac – log file analysis. It’s like BBEdit was made specifically for it.&lt;/p&gt;
&lt;p&gt;Here’s a UTM firewall packet filter log containing all entries for a given day, downloaded right from the UTM’s log file interface.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit1-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit1&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1044&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit1-AF741674-37FB-46A3-8751-BBDEA0A363D0.DWwpCsiV_w6VYX.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If I want to look at only entries for 192.168.5.5 and 192.168.5.109, I can open the Search dialog box with ⌘F and put in a regular expression to search for that.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit2-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit2&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1450&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit2-AF741674-37FB-46A3-8751-BBDEA0A363D0.CzM-HHCu_Z1KMhsb.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Right in the Search dialog box, before even hitting “Find All”, it shows me at the bottom how many matches there are – 3505 of them.&lt;/p&gt;
&lt;p&gt;If I do hit “Find All”, it opens a new window containing those lines at the top of the window, and, if I click on one of them, the log file they are in with the highlighted line in view at the bottom of the window. It’s great for contextualizing matches.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit11-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit11&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;940&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit11-AF741674-37FB-46A3-8751-BBDEA0A363D0.CxIQnYB0_Z1OBeh7.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But what if I want a document that contains those matching lines and nothing else? That’s what the “Extract” button on the Search dialog box is for. By clicking that instead of “Find All”, a new document is created in BBEdit that contains just the matching lines named “Extracted occurrences of (insert regular expression search string here)”.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit3-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit3&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1044&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit3-AF741674-37FB-46A3-8751-BBDEA0A363D0.0duGD827_RJUbh.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I use this all the time to drill down further and further without having to edit any files or keep search results windows open. Let’s say I have a subset of IP addresses extracted, like anything in the 192.168.5.x range, and I want to see only lines that have a firewall action of “drop” in them. In other words, I want to ignore all cases where the firewall passed the traffic along and only see when it blocked it for those IP addresses.&lt;/p&gt;
&lt;p&gt;Very simple. While viewing the document of extracted 192.168.5 matches, ⌘F again and enter a new regular expression looking for lines where action=“drop”. The search dialog shows 29 matches.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit6-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit6&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1194&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit6-AF741674-37FB-46A3-8751-BBDEA0A363D0.DIVRTY2T_Z14BVq1.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hit the “Extract” button and extract the 29 matches to a new document.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit8-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit8&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1036&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit8-AF741674-37FB-46A3-8751-BBDEA0A363D0.CXo8Lnqg_Z15xv1P.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sometimes when viewing results like this I want blank lines between them so I use a regular expression find and replace when doing this, and click the “Replace All” button in the search dialog, which acts on the active document and replaces all matches with what I want – in my case, the same result lines but followed by 2 newlines after each of them.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit9-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit9&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1186&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit9-AF741674-37FB-46A3-8751-BBDEA0A363D0.2SJsx-cc_pJvG5.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Much better for my tired old eyes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEedit10-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEedit10&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1036&quot; src=&quot;https://scottwillsey.com/_astro/BBEedit10-AF741674-37FB-46A3-8751-BBDEA0A363D0.DB4gMtFn_1YhatD.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And now for some additional niceties of BBEdit search:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can save your searches and access them using the “g” button on the Search dialog to get a dropdown list to choose from.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit12-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit12&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1622&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit12-AF741674-37FB-46A3-8751-BBDEA0A363D0.De0KHEQl_zEhoX.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;You can also, as my examples in this post illustrate, pull up previously used searches from the search history feature by clicking the clock icon button on the search dialog, and choosing from the dropdown list.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit13-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit13&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1188&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit13-AF741674-37FB-46A3-8751-BBDEA0A363D0.BZsbA5Xn_VEekm.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;There’s also a multi-file search you can open separately from regular search, with the same features mentioned above, using ⇧⌘F. It lets you choose the files to search in with great granularity, and it has the same “Find All”, “Replace All”, and “Extract” functions as the regular active file search function. This means you can extract all instances of a specific thing contained in multiple files to one new document.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit14-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit14&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1522&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit14-AF741674-37FB-46A3-8751-BBDEA0A363D0.DzUmpozf_ZmCFsL.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One important thing about composing a search in BBEdit if you do want to extract to a new document is that you need to compose your regular expression to include a full line and not just the exact search terms specified. For example, if you just search for “192.168.5” like this, and then Extract:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit16-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit16&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1402&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit16-AF741674-37FB-46A3-8751-BBDEA0A363D0.CpIA0Yif_1afNKX.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You get this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit15-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit15&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1032&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit15-AF741674-37FB-46A3-8751-BBDEA0A363D0.CXcgw5MJ_1PCXRy.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Not very useful if you’re into context or understanding of any kind. But if you use a regular expression that looks like this (since in my case, the log is separate lines of logged events):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit17-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit17&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1426&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit17-AF741674-37FB-46A3-8751-BBDEA0A363D0.B_CD7dN9_ZUGbJq.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now you get the full line for each matching line:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEdit18-AF741674-37FB-46A3-8751-BBDEA0A363D0.jpg&quot;&gt;&lt;img alt=&quot;BBEdit18&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;494&quot; src=&quot;https://scottwillsey.com/_astro/BBEdit18-AF741674-37FB-46A3-8751-BBDEA0A363D0.1PWHbiXE_DSxkr.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That’s because the search was created with a regular expression of &lt;code&gt;^.*192\.168\.5.*$&lt;/code&gt;, which looks for start of line, any characters any number of times followed by 192.168.5, followed by any number of any characters, followed by end of line. When using regular expressions as search terms, make sure that the Grep option next to “Matching:” in the search dialog box is checked so that the search term acts as a regular expression instead of a literal string.&lt;/p&gt;
&lt;p&gt;I’m sure there’s much more that I haven’t even discovered about BBEdit and searching and extracting yet, but these are some things that I use all the time and find indispensable. If your job or hobby requires you to parse log files very often, I recommend a copy of BBEdit even if you never use it for anything else. It’s still very worth the price for that.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I’m old too, so this is fair game. And it’s true. I don’t think many new and or young Mac users use or even know about BBEdit. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>BBEdit is not my choice of code editor or writing app, but for logfile analysis, it&apos;s the best.</summary></item><item><title>Astro 5 Upgrade</title><link>https://scottwillsey.com/astro5</link><guid isPermaLink="true">https://scottwillsey.com/astro5</guid><description>Astro 5 is out with a number of changes from Astro 4. The good news is I was able to upgrade instantly with no modifications (but there are some to come later).</description><pubDate>Tue, 10 Dec 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://astro.build/blog/astro-5/&quot;&gt;Astro 5&lt;/a&gt; is out, and it has a number of changes from Astro 4. The good news is, I was able to upgrade this site to it without making any changes at all. That doesn’t mean I don’t have any to make – I need to &lt;a href=&quot;https://docs.astro.build/en/guides/upgrade-to/v5/#updating-existing-collections&quot;&gt;convert my Content Collections&lt;/a&gt; to the new &lt;a href=&quot;https://astro.build/blog/content-layer-deep-dive/&quot;&gt;Content Layer API&lt;/a&gt; at the very least, for example.&lt;/p&gt;
&lt;p&gt;But the fact that it worked as is enabled me to update all my packages to the latest versions and then worry about updating specific implementation details later.&lt;/p&gt;
&lt;p&gt;I do want to point out that if you have any sites using the &lt;a href=&quot;https://starlight.astro.build&quot;&gt;Astro Starlight documentation site framework&lt;/a&gt;, you can’t upgrade to Astro 5 yet. It will not compile. &lt;a href=&quot;https://github.com/withastro/starlight/pull/2612&quot;&gt;There is a PR in place&lt;/a&gt; and the stellar Astro documentation team is all over it!&lt;/p&gt;
&lt;p&gt;I’ll make notes about the actual changes I do make to this site to be fully Astro 5 compliant and write a post about it soon.&lt;/p&gt;</content:encoded><summary>Astro 5 is out with a number of changes from Astro 4. The good news is I was able to upgrade instantly with no modifications (but there are some to come later).</summary></item><item><title>Manage Multiple GitHub Deploy Keys</title><link>https://scottwillsey.com/multiple-gh-deploy</link><guid isPermaLink="true">https://scottwillsey.com/multiple-gh-deploy</guid><description>How to manage multiple GitHub deployment keys for different repos from one user account.</description><pubDate>Mon, 18 Nov 2024 13:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#github-deploy-keys&quot;&gt;GitHub Deploy Keys&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#create-the-deploy-keys&quot;&gt;Create the Deploy Keys&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#add-the-public-keys-to-the-github-repositories&quot;&gt;Add the Public Keys to the GitHub Repositories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#assign-the-correct-keys-to-the-correct-repositories&quot;&gt;Assign the Correct Keys to the Correct Repositories&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;github-deploy-keys&quot;&gt;GitHub Deploy Keys&lt;/h2&gt;
&lt;p&gt;Sometimes I want to be able to pull a personal GitHub repository onto a server in order to keep some files up to date. Things like scripts that I won’t edit on the server and so won’t need to push to GitHub are good candidates for this. In order to accomplish this in a reasonably secure way, I use &lt;a href=&quot;https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys&quot;&gt;GitHub Deploy Keys&lt;/a&gt;. With a read-only deploy key, if someone ever gets access to my server I’ll suddenly have a billion new problems, but worrying about my repositories being overwritten with malicious garbage won’t be one of them.&lt;/p&gt;
&lt;p&gt;Deploy keys are repository specific, however, which means if you have multiple repositories you want to pull from GitHub onto the server, you need a way to specify which deploy key each repo should use.&lt;/p&gt;
&lt;p&gt;Let’s use an example where I have two repos, both of which I want to pull onto my server. One is called server-management-scripts and the other is called website-management-scripts.&lt;/p&gt;
&lt;h2 id=&quot;create-the-deploy-keys&quot;&gt;Create the Deploy Keys&lt;/h2&gt;
&lt;p&gt;You can use good old &lt;code&gt;ssh-keygen&lt;/code&gt; in your account’s .ssh directory on the server to create your keys. In my case, ecdsa keys, named sms-deploy (for server-management-scripts repo) and wms-deploy (for website-management-scripts repo).&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ssh-keygen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ecdsa&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;sms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;ssh-keygen -t ecdsa -f sms-deploy&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;And&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ssh-keygen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ecdsa&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;ssh-keygen -t ecdsa -f wms-deploy&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Because these are going to be read-only keys for their repos, I do not use a passphrase on them.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@dragonfly&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/.ssh&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; $ &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ll&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;total&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwx------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:23&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;./&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwxr-xr-x&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:21&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;../&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;194&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;May&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2024&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;authorized_keys&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;133&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mar&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2021&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;505&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:22&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;sms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;177&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:22&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;sms-deploy.pub&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;505&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:23&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;177&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:23&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wms-deploy.pub&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@dragonfly ~/.ssh $ lltotal 40drwx------ 2 scott scott 4096 Nov 19 18:23 ./drwxr-xr-x 8 scott scott 4096 Nov 19 18:21 ../-rw------- 1 scott scott  194 May  8  2024 authorized_keys-rw-r--r-- 1 scott scott  133 Mar 12  2021 config-rw------- 1 scott scott  505 Nov 19 18:22 sms-deploy-rw-r--r-- 1 scott scott  177 Nov 19 18:22 sms-deploy.pub-rw------- 1 scott scott  505 Nov 19 18:23 wms-deploy-rw-r--r-- 1 scott scott  177 Nov 19 18:23 wms-deploy.pub&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;add-the-public-keys-to-the-github-repositories&quot;&gt;Add the Public Keys to the GitHub Repositories&lt;/h2&gt;
&lt;p&gt;Go to your repository on GitHub, go into the repository settings, Click the Deploy Keys link, and click the Add Deploy Key button.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SettingsDeployAdd-E6F887B2-4CDB-4CC5-86E2-7E939C21F850.jpg&quot;&gt;&lt;img alt=&quot;SettingsDeployAdd&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1206&quot; src=&quot;https://scottwillsey.com/_astro/SettingsDeployAdd-E6F887B2-4CDB-4CC5-86E2-7E939C21F850.CD35O2Bx_ZcArg9.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Give the key a name in the Title textbox, copy the contents of your public key (the .pub file for the key) that you created on your server into the Key textbox, and leave “Allow write access” unchecked. Click the “Add key” button.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/DeployKeysAddNew-E6F887B2-4CDB-4CC5-86E2-7E939C21F850.jpg&quot;&gt;&lt;img alt=&quot;DeployKeysAddNew&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1086&quot; src=&quot;https://scottwillsey.com/_astro/DeployKeysAddNew-E6F887B2-4CDB-4CC5-86E2-7E939C21F850.PyWKsJIe_vTNMy.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now your new deploy key shows in the repo’s Settings &gt; Deploy keys, and this key can be used to pull the repo.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/NewDeployKey-E6F887B2-4CDB-4CC5-86E2-7E939C21F850.jpg&quot;&gt;&lt;img alt=&quot;NewDeployKey&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;942&quot; src=&quot;https://scottwillsey.com/_astro/NewDeployKey-E6F887B2-4CDB-4CC5-86E2-7E939C21F850.QA7Pz_u1_2xmeu.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you’ve added the public keys to the repos, you can delete them from your server, leaving only the private keys behind.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@dragonfly&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/.ssh&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; $ &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ll&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;total&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwx------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:23&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;./&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwxr-xr-x&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:21&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;../&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;194&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;May&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2024&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;authorized_keys&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;133&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mar&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2021&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;505&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:22&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;sms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-------&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;505&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:23&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@dragonfly ~/.ssh $ lltotal 32drwx------ 2 scott scott 4096 Nov 19 18:23 ./drwxr-xr-x 8 scott scott 4096 Nov 19 18:21 ../-rw------- 1 scott scott  194 May  8  2024 authorized_keys-rw-r--r-- 1 scott scott  133 Mar 12  2021 config-rw------- 1 scott scott  505 Nov 19 18:22 sms-deploy-rw------- 1 scott scott  505 Nov 19 18:23 wms-deploy&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;assign-the-correct-keys-to-the-correct-repositories&quot;&gt;Assign the Correct Keys to the Correct Repositories&lt;/h2&gt;
&lt;p&gt;In order to make sure that a &lt;code&gt;git pull&lt;/code&gt; command works correctly in each repo, I can edit my user account ssh config file on the server to contain these entries:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/.ssh/config&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Host&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;serverscripts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;HostName&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;github.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;User&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;AddKeysToAgent&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentityFile&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/.ssh/sms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentitiesOnly&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ForwardAgent&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Host&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;websitescripts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;HostName&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;github.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;User&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;AddKeysToAgent&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentityFile&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/.ssh/wms-deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;IdentitiesOnly&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ForwardAgent&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Host serverscripts HostName github.com User git AddKeysToAgent yes IdentityFile ~/.ssh/sms-deploy IdentitiesOnly yes ForwardAgent yesHost websitescripts HostName github.com User git AddKeysToAgent yes IdentityFile ~/.ssh/wms-deploy IdentitiesOnly yes ForwardAgent yes&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now, in each repo’s .git directory on the server, I can edit the config file to reference the correct entry in &lt;code&gt;~/.ssh/config&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;/usr/local/sbin/scripts/sms/.git/config&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;core&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;repositoryformatversion&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;filemode&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;bare&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;logallrefupdates&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;remote &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;origin&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#664f20;--2:#f69f53&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;git@serverscripts:scottaw66/server-management-scripts.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;+refs/heads/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;:refs/remotes/origin/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;branch &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;remote&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;origin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;merge&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;refs/heads/main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true[remote &amp;#x22;origin&amp;#x22;] url = git@serverscripts:scottaw66/server-management-scripts.git fetch = +refs/heads/*:refs/remotes/origin/*[branch &amp;#x22;main&amp;#x22;] remote = origin merge = refs/heads/main&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Notice the highlighted part, which is the URL for the repo to use. It uses &lt;code&gt;serverscripts&lt;/code&gt; as the server portion of the URL (the part after the &lt;code&gt;@&lt;/code&gt; symbol and before the &lt;code&gt;:&lt;/code&gt;), because that matches the first Host entry in my account’s &lt;code&gt;~/.ssh/config&lt;/code&gt; file on the server.&lt;/p&gt;
&lt;p&gt;The second git repo’s config file on the server would look like this, since I gave it a Host name of &lt;code&gt;websitescripts&lt;/code&gt; in the &lt;code&gt;~/.ssh/config&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;/usr/local/sbin/scripts/wms/.git/config&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;core&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;repositoryformatversion&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;filemode&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;bare&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;logallrefupdates&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;remote &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;origin&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#664f20;--2:#f69f53&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;git@websitescripts:scottaw66/website-management-scripts.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;+refs/heads/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;:refs/remotes/origin/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;branch &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;remote&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;origin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;merge&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;refs/heads/main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true[remote &amp;#x22;origin&amp;#x22;] url = git@websitescripts:scottaw66/website-management-scripts.git fetch = +refs/heads/*:refs/remotes/origin/*[branch &amp;#x22;main&amp;#x22;] remote = origin merge = refs/heads/main&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now both repos are linked back to a specific entry in &lt;code&gt;~/.ssh/config&lt;/code&gt;, and therefore to their respective deploy keys, specified on the &lt;code&gt;IdentityFile&lt;/code&gt; line. The ssh key file for the server management scripts repo is &lt;code&gt;~/.ssh/sms-deploy&lt;/code&gt;, and the ssh key for the website management scripts repo is &lt;code&gt;~/.ssh/wms-deploy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When you do a &lt;code&gt;git pull&lt;/code&gt; in either of those repos on the server, it will now use the correct deploy key to authenticate.&lt;/p&gt;</content:encoded><summary>How to manage multiple GitHub deployment keys for different repos from one user account.</summary></item><item><title>Initial SuperDuper Copy</title><link>https://scottwillsey.com/superduper-initial</link><guid isPermaLink="true">https://scottwillsey.com/superduper-initial</guid><description>A tip for making your first SuperDuper! drive copy.</description><pubDate>Mon, 28 Oct 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night I &lt;a href=&quot;https://scottwillsey.com/superduper-invisible/&quot;&gt;mentioned&lt;/a&gt; setting up &lt;a href=&quot;https://shirt-pocket.com/SuperDuper/SuperDuperDescription.html&quot;&gt;SuperDuper!&lt;/a&gt; to clone my Mac’s internal SSD to an external SSD daily. One thing about the initial copy you should know that doesn’t pertain to subsequent incremental copies is don’t let your Mac sleep during the initial copy.&lt;/p&gt;
&lt;p&gt;I even thought about this when I started the initial backup, but then thought it shouldn’t matter. I came back to a failed copy with the following errors in the SuperDuper! log:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Info&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Volume&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;replication&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;failed&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Resource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;busy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Error&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;***ERROR&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;OCCURRED:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;****&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;FAILED&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;****&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;result=&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;errno=&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (Operation &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;permitted&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;| Info |       Volume replication failed - Resource busy| Error | ***ERROR OCCURRED: ****FAILED****: result=256 errno=60 (Operation not permitted)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I sent the log to &lt;a href=&quot;https://shirt-pocket.com&quot;&gt;Shirt Pocket&lt;/a&gt; support, and Dave Nanian quickly replied with the following (I hope he doesn’t mind me posting it here):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your Mac has fallen asleep during the copy, even though we asked it not to, or something similar (such as a TRIM operation that takes too long) — as you can see, Apple’s error is vague and unhelpful.&lt;/p&gt;
&lt;p&gt;But, in our experience, this usually works. Please reformat the backup drive (which, done this way, should reset all the TRIM operations):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open Disk Utility&lt;/li&gt;
&lt;li&gt;Choose “Show All Devices” from the View menu&lt;/li&gt;
&lt;li&gt;Select the destination drive hardware (above the existing volume)&lt;/li&gt;
&lt;li&gt;Click Erase&lt;/li&gt;
&lt;li&gt;Choose the “GUID” partition scheme (2nd pop-up), THEN “APFS” formatting (1st pop-up) and name appropriately&lt;/li&gt;
&lt;li&gt;Click Erase&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then restart your Mac. Install Coca (free) from the App Store and enable it to keep your Mac awake — &lt;em&gt;including&lt;/em&gt; the screen. Ensure it’s plugged in if it’s a laptop. Turn Time Machine off temporarily. Then try the erase-then-copy backup again.&lt;/p&gt;
&lt;p&gt;Note that none of this should be necessary for future Smart Updates, which are done with our copy engine, and not Apple’s.&lt;/p&gt;
&lt;p&gt;Hope that helps!&lt;br&gt;
—&lt;br&gt;
Dave Nanian&lt;br&gt;
Shirt Pocket&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In my case, I use the &lt;a href=&quot;https://www.raycast.com/mooxl/coffee&quot;&gt;Raycast Coffee extension&lt;/a&gt; now when I want to keep my Mac awake, so I used that to make sure the first copy finished.&lt;/p&gt;
&lt;p&gt;Anyway, don’t sleep on that first copy, and do back your drive up to more than one destination. Make at least one local and at least one remote (cloud backup is fine). I highly recommend SuperDuper! for its features, price, and always outstanding support from Dave Nanian.&lt;/p&gt;</content:encoded><summary>A tip for making your first SuperDuper! drive copy.</summary></item><item><title>SuperDuper Invisible</title><link>https://scottwillsey.com/superduper-invisible</link><guid isPermaLink="true">https://scottwillsey.com/superduper-invisible</guid><description>Here&apos;s a funny little UI quirk in SuperDuper! (which I love, by the way).</description><pubDate>Sun, 27 Oct 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve certainly used drive cloning software in the past, including &lt;a href=&quot;https://shirt-pocket.com/SuperDuper/SuperDuperDescription.html&quot;&gt;SuperDuper!&lt;/a&gt;.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; For awhile now, though, I’ve just had &lt;a href=&quot;https://www.backblaze.com&quot;&gt;Backblaze&lt;/a&gt; as my backup method, which does violate my principle of always having local and remote backups. So when I saw Jason Snell’s article on &lt;a href=&quot;https://sixcolors.com&quot;&gt;SixColors&lt;/a&gt; about &lt;a href=&quot;https://sixcolors.com/post/2024/10/use-a-cloned-drive-to-recover-from-mac-failures/&quot;&gt;using a cloned drive to recover from Mac failures&lt;/a&gt;, it gave me the impetus to make a clone again.&lt;/p&gt;
&lt;p&gt;I love and like and love SuperDuper! and always have, but I do wonder about this UI choice…
&lt;a href=&quot;https://scottwillsey.com/images/posts/SuperDuperInvisible-30A29EEA-41C3-4EF8-9E93-DA26BABE9DB6.jpg&quot;&gt;&lt;img alt=&quot;SuperDuper Invisible UI Element&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1312&quot; src=&quot;https://scottwillsey.com/_astro/SuperDuperInvisible-30A29EEA-41C3-4EF8-9E93-DA26BABE9DB6.BsPvau56_1gc74y.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you can’t see the blue progress bar inside the outlined section of that Copy Files section header, you are not the only one. It took me a couple minutes to realize it was there.&lt;/p&gt;
&lt;p&gt;Look, I may be the pot calling the kettle black, or not picking the mote out of my own eye, or whatever metaphor from 50,000 years ago for hypocrisy you want to use because of the color of the hyperlinks on my site’s dark theme, but that is some kind of invisible ink level trickery on that progress bar.&lt;/p&gt;
&lt;p&gt;Anyway… according to the invisible progress bar, as I write this SuperDuper! is about 75% of the way done cloning my internal drive.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;It looks like I’m ending that sentence with two punctuation marks, but SuperDuper! is the name of the product, and the period is the end of the sentence. Really. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Here&apos;s a funny little UI quirk in SuperDuper! (which I love, by the way).</summary></item><item><title>nownownow Oregon Edition</title><link>https://scottwillsey.com/now-oregon</link><guid isPermaLink="true">https://scottwillsey.com/now-oregon</guid><description>I&apos;m not the only Oregonian who thinks what they&apos;re doing /now is important.</description><pubDate>Sat, 26 Oct 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You all know, I hope, that I have a &lt;a href=&quot;https://scottwillsey.com/now/&quot;&gt;/now page&lt;/a&gt; on this site for quick dumps of things I’m into at the moment. It’s ephemeral, as /now pages should be.&lt;/p&gt;
&lt;p&gt;The idea of the /now page comes from &lt;a href=&quot;https://sive.rs&quot;&gt;Derek Sivers&lt;/a&gt;, and he has a whole site, &lt;a href=&quot;https://nownownow.com&quot;&gt;nownownow.com&lt;/a&gt;, dedicated to spreading the message and the sheer fun of /now pages.&lt;/p&gt;
&lt;p&gt;And look! You can see people by region!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/nownownow-A3BD2879-F65C-4077-B706-F3180BB4867D.jpg&quot;&gt;&lt;img alt=&quot;nownownow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1164&quot; src=&quot;https://scottwillsey.com/_astro/nownownow-A3BD2879-F65C-4077-B706-F3180BB4867D.CmXpgx3D_GUx0H.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’m very pleased to announce that, as of this writing, &lt;a href=&quot;https://nownownow.com/US-OR&quot;&gt;37 of us in Oregon&lt;/a&gt; are extremely proud of whatever it is we’re doing /now. &lt;a href=&quot;https://nownownow.com/US-OR&quot;&gt;You should definitely check it out&lt;/a&gt;. I’m even listed right beside Justin Miller.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/nownownowOregon-DAA8714A-E89C-4FD3-8C13-9EB1A5BC655C.jpg&quot;&gt;&lt;img alt=&quot;nownownow Oregon&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1164&quot; src=&quot;https://scottwillsey.com/_astro/nownownowOregon-DAA8714A-E89C-4FD3-8C13-9EB1A5BC655C.C-RlFzqs_Z2uLz7K.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was a little surprised to see that &lt;a href=&quot;https://nownownow.com/JP&quot;&gt;everyone in Japan&lt;/a&gt; touting their /now pages are gaijin&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and not Japanese. Some of those people in Japan need to talk to the people they live amongst and spread the news! &lt;a href=&quot;https://nownownow.com/p/w7AB&quot;&gt;Richard Möhn&lt;/a&gt; is my hero though – he lives in Kagoshima City, my old stomping grounds!&lt;/p&gt;
&lt;p&gt;Here’s your assignment for today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visit my &lt;a href=&quot;https://scottwillsey.com/now/&quot;&gt;/now&lt;/a&gt; page.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nownownow.com/about&quot;&gt;Read up about /now pages&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Make your own.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sive.rs/contact&quot;&gt;Email the URL to Derek Sivers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Be part of a nice group of people who like to have fun, love the indie web, and think you should do it /now!&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Foreigners &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>I&apos;m not the only Oregonian who thinks what they&apos;re doing /now is important.</summary></item><item><title>Mail Weekly Reads Script Command</title><link>https://scottwillsey.com/weekly-reads-mail</link><guid isPermaLink="true">https://scottwillsey.com/weekly-reads-mail</guid><description>I created a Raycast Script Command to take the contents of my latest Reads post, reformat it, and mail it to unsuspecting family members.</description><pubDate>Thu, 17 Oct 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/weekly-reads&quot;&gt;As I mentioned previously&lt;/a&gt;, I have a &lt;a href=&quot;https://scottwillsey.com/reads/1/&quot;&gt;Weekly Reads page&lt;/a&gt; that I set up to make it easier for me to share articles with my dad and brother (and anyone else who cares), complete with RSS feed. But let’s be real, neither of them wants to be bothered with my feed because they have stuff to do and we already have a tradition of emailing links to each other.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Last night I created a Raycast Script Command that looks at the markdown file for my latest Reads update, parses and reformats it for email, and mails it out to them. It looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title Mail Weekly Reads&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.icon&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;text&quot;, &quot;placeholder&quot;: &quot;Subject&quot; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Website&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;subject&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;$1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Find the latest file in the specified directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;latest_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Sites/scottwillsey/src/content/reads&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-n1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Processing file: &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$latest_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Read the contents of the file, remove YAML front matter, and modify markdown links&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;awk&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;BEGIN { in_frontmatter=0; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/^---$/ { in_frontmatter = !in_frontmatter; next; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;!in_frontmatter { print; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/content/reads/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$latest_file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;perl&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-0pe&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s/\*\*\[(.+)\]\((.+)\)\*\*\n\n(.+)/$3 → $1 – $2\n/gm&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Content after regex replacement:&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Escape the content for AppleScript&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;escaped_content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sed&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s/\\/\\\\/g&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s/&quot;/\\&quot;/g&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s/`/\\`/g&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s/&apos;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&apos;/g&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s/$/\\n/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;tr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-d&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Pass the escaped content to the AppleScript&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;EOD&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;on run&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theContent to &quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$escaped_content&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;tell application &quot;Mail&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theFrom to &quot;me@mine.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theTos to {&quot;dad@dads.com&quot;, &quot;brother@brothers.com&quot;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theCcs to {}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theBccs to {}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theSubject to &quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$subject&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theSignature to &quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theAttachments to {}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theDelay to 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set theMessage to make new outgoing message with properties {sender:theFrom, subject:theSubject, content:theContent, visible:false}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;tell theMessage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;repeat with theTo in theTos&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;make new recipient at end of to recipients with properties {address:theTo}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;send theMessage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;end run&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;EOD&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Mail Weekly Reads# @raycast.mode fullOutput# Optional parameters:# @raycast.icon# @raycast.argument1 { &amp;#x22;type&amp;#x22;: &amp;#x22;text&amp;#x22;, &amp;#x22;placeholder&amp;#x22;: &amp;#x22;Subject&amp;#x22; }# @raycast.packageName Website# Documentation:# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseysubject=$1# Find the latest file in the specified directorylatest_file=$(ls -t ~/Sites/scottwillsey/src/content/reads | head -n1)echo &amp;#x22;Processing file: $latest_file&amp;#x22;# Read the contents of the file, remove YAML front matter, and modify markdown linkscontent=$(awk &amp;#x27;    BEGIN { in_frontmatter=0; }    /^---$/ { in_frontmatter = !in_frontmatter; next; }    !in_frontmatter { print; }&amp;#x27; &amp;#x22;/Users/scott/Sites/scottwillsey/src/content/reads/$latest_file&amp;#x22;)content=$(echo &amp;#x22;$content&amp;#x22; | perl -0pe &amp;#x27;s/\*\*\[(.+)\]\((.+)\)\*\*\n\n(.+)/$3 → $1 – $2\n/gm&amp;#x27;)echo &amp;#x22;Content after regex replacement:&amp;#x22;echo &amp;#x22;$content&amp;#x22;# Escape the content for AppleScriptescaped_content=$(echo &amp;#x22;$content&amp;#x22; | sed -e &amp;#x27;s/\\/\\\\/g&amp;#x27; -e &amp;#x27;s/&amp;#x22;/\\&amp;#x22;/g&amp;#x27; -e &amp;#x27;s/&amp;#x60;/\\&amp;#x60;/g&amp;#x27; -e &amp;#x22;s/&amp;#x27;/\\&amp;#x27;/g&amp;#x22; -e &amp;#x27;s/$/\\n/&amp;#x27; | tr -d &amp;#x27;\n&amp;#x27;)# Pass the escaped content to the AppleScriptosascript &lt;&lt;EODon run    set theContent to &amp;#x22;$escaped_content&amp;#x22;    tell application &amp;#x22;Mail&amp;#x22;        set theFrom to &amp;#x22;me@mine.com&amp;#x22;        set theTos to {&amp;#x22;dad@dads.com&amp;#x22;, &amp;#x22;brother@brothers.com&amp;#x22;}        set theCcs to {}        set theBccs to {}        set theSubject to &amp;#x22;$subject&amp;#x22;        set theSignature to &amp;#x22;&amp;#x22;        set theAttachments to {}        set theDelay to 1        set theMessage to make new outgoing message with properties {sender:theFrom, subject:theSubject, content:theContent, visible:false}        tell theMessage            repeat with theTo in theTos                make new recipient at end of to recipients with properties {address:theTo}            end repeat        end tell        send theMessage    end tellend runEOD&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It takes one parameter when I run the script so that I can give the email a cutesy custom subject (another idea I stole from my brother).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastMailWeeklyReadsScriptCommand-CFB75642-BC5F-48B9-BDF3-E7823DE6F714.jpg&quot;&gt;&lt;img alt=&quot;RaycastMailWeeklyReadsScriptCommand&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1060&quot; src=&quot;https://scottwillsey.com/_astro/RaycastMailWeeklyReadsScriptCommand-CFB75642-BC5F-48B9-BDF3-E7823DE6F714.CEqESuV7_ZgIL94.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then it parses the latest file in my web project’s /src/content/reads directory, replaces markdown links with “commentary → link title – link” for each link and following commentary paragraph in the page, and gives that to an AppleScript to send the mail.&lt;/p&gt;
&lt;p&gt;From this markdown page that generates &lt;a href=&quot;https://scottwillsey.com/reads/20241015/&quot;&gt;the individual HTML reads page&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ReadsMarkdown-A113C477-D22C-432C-BBF1-1A0E6585DC17.jpg&quot;&gt;&lt;img alt=&quot;ReadsMarkdown&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1022&quot; src=&quot;https://scottwillsey.com/_astro/ReadsMarkdown-A113C477-D22C-432C-BBF1-1A0E6585DC17.BfcySTi2_ZMP8ko.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To this email that gets sent to my long-suffering family members:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ReadsEmail-D6CDFB20-D9A0-4023-BCE9-82A322A999E6.jpg&quot;&gt;&lt;img alt=&quot;ReadsEmail&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;948&quot; src=&quot;https://scottwillsey.com/_astro/ReadsEmail-D6CDFB20-D9A0-4023-BCE9-82A322A999E6.CaA5rRtC_vR1yF.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s simple and effective. You can do this and make your family hate you too.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Fine, it’s my brother’s tradition and I’m stealing it, much to his annoyance I’m sure. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>I created a Raycast Script Command to take the contents of my latest Reads post, reformat it, and mail it to unsuspecting family members.</summary></item><item><title>Raycast Extensions I Use</title><link>https://scottwillsey.com/raycast-extensions</link><guid isPermaLink="true">https://scottwillsey.com/raycast-extensions</guid><description>Raycast has extensions, and I use some of them. Here they are!</description><pubDate>Sun, 13 Oct 2024 17:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introductionum&quot;&gt;Introductionum&lt;/h2&gt;
&lt;p&gt;Recently Niléane of MacStories wrote about the Raycast extensions she uses in &lt;a href=&quot;https://www.macstories.net/roundups/adding-to-my-macs-swiss-army-knife-a-raycast-extension-roundup/&quot;&gt;Adding to My Mac’s Swiss Army Knife: A Raycast Extension Roundup - MacStories&lt;/a&gt;. I learned about a couple good ones that I wasn’t aware of, but I also thought I would list Raycast extensions I use here, along with a little bit about why for each of them.&lt;/p&gt;
&lt;h2 id=&quot;the-listium&quot;&gt;The Listium&lt;/h2&gt;
&lt;p&gt;So here they are in alphabetical order-ish:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/khasbilegt/1password&quot;&gt;1Password&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I actually underutilize this one. It allows for opening items in various ways (in 1P or in a browser), generating passwords, and more, but I’m so familiar with 1Password’s own keyboard shortcuts that I forget about the Raycast extension.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/append-clipboard&quot;&gt;Append Clipboard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a really outstanding extension that lets you prepend or append text to whatever’s on your clipboard with a pre-specified separator. It sounds like something I should use all the time. I’d actually forgotten I had this one installed. &lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🤦‍♂️&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/yug2005/mail&quot;&gt;Apple Mail&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Stop me if you’ve heard this one before – here’s an extension that sounds really useful and I just don’t use it. But I should! Checking for new mail, composing an email, sharing finder items to mail, seeing recent or important mail, these are all possible with this extension. I think with most of these it’s a matter of building muscle memory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/raycast/apple-reminders&quot;&gt;Apple Reminders&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I actually &lt;strong&gt;have&lt;/strong&gt; used this extension! The Apple Reminders extension lets you use natural language to set reminds, in addition to allowing you to view and complete them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/nhojb/brew&quot;&gt;Brew&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hi, Homebrew users! Want a quick way to see what you’ve installed with Homebrew, or search for and install new formulae and casks?  You can do so from wherever you’re at in macOS with this extension.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/erics118/change-case&quot;&gt;Change Case&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use this extension all the time. Capital Case, camelCase, lower case, PascalCase, snake_case, UPPER CASE, and more… select your text and have at it. I love this one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/ike-gg/clean-keyboard&quot;&gt;Clean Keyboard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I just started using this one today. It effectively locks your keyboard until you type ^ U (Ctrl+U) to unlock it, in order to allow you to clean the keyboard without deleting your home folder or sending an obscene message to your boss.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/Aayush9029/cleanshotx&quot;&gt;CleanShot X&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’m currently a heavy CleanShot X user and this extension has a ton of useful CleanShot X commands, but once again… the old muscle memory. If you picked up on the fact that I’m primarily writing this article to benefit myself, you win the prize of knowing how insightful you are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/joshtemple/clipboard-formatter&quot;&gt;Clipboard Formatter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use this all the time to clear formatting from items in the clipboard. It comes in handy for certain things I have to enter into excel, for example. Yes, you can tell excel to paste in content only, but this is faster for me, and it’s also useful anywhere you need formatting removed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/Jordan-Ellis/colorslurp&quot;&gt;ColorSlurp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use ColorSlurp for color picking and therefore I use this extension to quickly launch it and grab colors, but truthfully I may very well switch to &lt;a href=&quot;https://www.raycast.com/thomas/color-picker&quot;&gt;Color Picker&lt;/a&gt; instead. In fact, I’m doing it right now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/copy-path&quot;&gt;Copy Path&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Oh, I love this one. For example, I just had a finder window with some pdfs in it open and I ran this extension and it gave me &lt;code&gt;/Users/scott/Documents/BlueDragonfly/Sophos/ET15 - Sophos Central Endpoint Protection v5.0 - Engineer/ET15-Sophos-Central-5.0v5-Engineer-EN/01 Sophos Central Overview/&lt;/code&gt; on my clipboard. You can’t beat that!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/niall-maloney/cron-description&quot;&gt;Cron Description&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You ever look in crontab and see something illegible like &lt;code&gt;*/15 * * * * python3 /usr/local/sbin/scripts/wanipy/main.py --env prod &gt; /dev/null&lt;/code&gt; and you can’t remember what &lt;code&gt;*/15 * * * *&lt;/code&gt; means? Well, it means run this thing every 15 minutes, and I know that because (well, I already knew that particular one) Cron Description told me!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/jonathangiardino/curl&quot;&gt;cURL&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I know I installed this for a reason, I just don’t remember what it was. Anyway, it lets you use curl to make an HTTP request, complete with custom headers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/phlo/custom-folder&quot;&gt;Custom Folder&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I haven’t actually used this yet, but this one helps you create custom folder icons and apply them to folders you want to customize. It’s not something you’ll use every day, but it’s pretty cool.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/yangxy/date-format-converter&quot;&gt;Date Format Converter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Input a date string and then format it into any standard date format you like. It’s that simple.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/nils_hoenson/dynamic-font-size&quot;&gt;Dynamic Font Size&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’ve ever struggled with the CSS clamp function, you’ll like this one. You just enter your parameters, like min and max font sizes and min and max viewport sizes, and it’ll generate your clamp for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/madebyankur/easings&quot;&gt;Easings&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another CSS helper. You can quickly copy an ease-in like &lt;code&gt;cubic-bezier(0.55, 0.085, 0.68, 0.53);&lt;/code&gt; or you can create your own custom CSS transitions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/destiner/json-format&quot;&gt;Format JSON&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets you take JSON that’s not formatted nicely and indent everything properly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/josephschmitt/gif-search&quot;&gt;GIF Search&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Search for GIFs, favorite them, paste them in various ways to various targets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/manumorante/git-commands&quot;&gt;Git Commands&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Search and learn what different git commands do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/demartini/github-cli-manual&quot;&gt;GitHub CLI Manual&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Helpful if you need to interact with GitHub using a CLI, this utility lets you search for commands and then opens the GitHub manual page for them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/raycast/github&quot;&gt;GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Too many commands to list here, but it lets you work with GitHub in various ways. I guess that’s pretty self-evident.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/thomas/github-repository-search&quot;&gt;GitHub Repository Search&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is for searching for repos on GitHub and quickly opening them (and really quickly opening repos you’ve visited before).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/Codely/google-chrome&quot;&gt;Google Chrome&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I primarily use this for searching Chrome history, but you can search bookmarks, open windows, search tabs, and more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/gebeto/translate&quot;&gt;Google Translate&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have never used this. Maybe I should uninstall it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/lucasmezencio/http-dot-cat&quot;&gt;HTTP.cat Status Codes&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This reminds you what all those pesky HTTP status codes mean AND gives you a cute cat to go with it. The internet was invented for cats. Don’t ever forget it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/destiner/iconify&quot;&gt;Iconify — Search Icons&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here’s a good one that I should really use more. Search for icons and get the svg source code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/Visual-Studio-Coder/ingredients-lister&quot;&gt;Ingredients Lister&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I can see why I installed this, but I can’t see why I haven’t used it yet. This grabs web pages or YouTube videos and gets recipe ingredients from them for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/pernielsentikaer/installed-extensions&quot;&gt;Installed Extensions&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re thinking “I bet Scott used this extension to list what extensions he has installed”, you win a Ferrari!! I mean, someone else is going to have to provide the Ferrari. But I’ll let you win it if they’re willing to give it. &lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🤷&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/MisakiCoca/link-cleaner&quot;&gt;Link Cleaner&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Clean those dirty links of yours, dammit!! Auto-scrubs tracking and referral crap off URLs for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/AntonNiklasson/lorem-ipsum&quot;&gt;Lorem Ipsum&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Occasionally while mocking up some web idea I’ll toss in some Lorem Ipsum text, and this is a super quick way to do it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/codedbyjordan/markdown-reference&quot;&gt;Markdown Reference&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I kind of installed this one because I could. I don’t think I’ve ever needed to use it. I use Markdown all the time but it’s pretty simple.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/menubar-calendar&quot;&gt;Menubar Calendar&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I like this one for letting me pop open a tiny calendar quickly and for also showing me upcoming calendar items.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/notion/notion&quot;&gt;Notion&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use Notion. I use Raycast. You’d think I’d use this extension. Truth is, I keep forgetting about it (again). I should at least use the search feature, that would save me some time getting to it in the Notion app itself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/open-link-in-specific-browser&quot;&gt;Open Link in Specific Browser&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is actually kind of cool, but I never use this because &lt;a href=&quot;https://scottwillsey.com/default-browser/&quot;&gt;I’ve created default browser script commands&lt;/a&gt; that I use all the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/open-path&quot;&gt;Open Path&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here’s another one I have but never used. It looks like a way to open things in various apps depending on what the source link is, but… I have no clue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/HelloImSteven/pins&quot;&gt;Pins&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I like this one. It’s just another way to get to things – I use it to create pins to Finder folders, mostly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/pomdtr/pipe-commands&quot;&gt;Pipe Commands&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This lets you take various input sources and pipe them into a script command. You’d think I would use this all the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/placeholder&quot;&gt;Placeholder&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Grabs placeholder images from Lorem Picsum. Pretty handy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/HelloImSteven/promptlab&quot;&gt;PromptLab&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A super useful extension for creating AI prompts to be used with Raycast AI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/fuksman/calendar&quot;&gt;Quick Calendar&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yep, another calendar extension, but this one just pops open a bigger calendar window to look at.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/mblode/quick-event&quot;&gt;Quick Event&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Um, I’m going to let you guess whether or not I’ve ever actually used this, but it’s for quickly creating calendar events.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/loris/random&quot;&gt;Random Data Generator&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a really cool one for quickly generating random dates, CC numbers, text, email addresses, and more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/petr/raycast-icons&quot;&gt;Raycast Icons&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Have not used. There, are you happy? This is for looking at various Raycast-specific icons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/ewlcheng/reddit-search&quot;&gt;Reddit Search&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I might use this more if 1.) I remembered I have it, 2.) I don’t hate Reddit so much. Does everyone there have to write like they’re 13?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/allenan/regex-tester&quot;&gt;Regex Tester&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I should use this more and see if it’s any good. I’m spoiled by BBEdit’s RegEx playground feature so I never do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/tegola/remove-paywall&quot;&gt;Remove Paywall&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’m not going to overtly state why I use this one, but I use it quite a bit. I don’t constantly end-run around paywalls on the same sites over and over. It’s for one-offs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/anwarulislam/ruler&quot;&gt;Ruler&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a cool one for measuring stuff on the screen. I used this the other day to make a screenshot of a certain form item on a web page vs. what the form item plugin thought the minimum width should be. Yes, I could have used the browser developer tools for that, but this was easier for the client to look at and instantly get the point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/loris/safari&quot;&gt;Safari&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Like its Chrome counterpart, I mostly use this for Safari history search, but it’s also good for searching tabs and the reading list (which I do use).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/huzef44/screenocr&quot;&gt;ScreenOCR&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t think I have ever used this because I’ve discovered the OCR reading shortcut in CleanShot X, but it is pretty cool.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/mrmartineau/search-npm&quot;&gt;Search npm Packages&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t really use npm for a lot these days because most stuff I script I now script in Python. I of course use npm with things like &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, but I don’t need to search for anything for that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/benvp/audio-device&quot;&gt;Set Audio Device&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a great one to use to make sure you’re using your podcast mic instead of the built-in laptop one or whatever else will pick up the cricket in your kitchen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/asubbotin/shell&quot;&gt;Shell&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t know. It looks cool, but I’ve never used it. I have &lt;a href=&quot;https://www.warp.dev&quot;&gt;Warp&lt;/a&gt;, what the hell, guys. Get off my back. &lt;span role=&quot;img&quot; aria-label=&quot;smiling face with open mouth &amp;#x26; smiling eyes&quot;&gt;😄&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/tonka3000/speedtest&quot;&gt;Speedtest&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A handy way to run the ever popular speedtest.net speed test.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/iKasch/summarize-youtube-video-with-ai&quot;&gt;Summarize YouTube Videos with AI&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I keep meaning to show this one to Peter. An AI watches videos so you don’t have to. Problem is, AIs are shite at summarizing (imnsho).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/hossammourad/raycast-system-monitor&quot;&gt;System Monitor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have &lt;strong&gt;no clue&lt;/strong&gt; why I have this installed, because I use and love iStat Menus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/text-shortcuts&quot;&gt;Text Shortcuts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use this a &lt;strong&gt;LOT&lt;/strong&gt; while writing and programming, and &lt;strong&gt;I LIKE IT.&lt;/strong&gt; Quick and easy text transformations of all types.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/joao.mainka/raycast-timezone-converter&quot;&gt;Timezone Converter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use this when I remember to. Mostly I use it before I’ve had coffee for trying to see what people on the east coast might be doing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/sawyerh/type-snob&quot;&gt;Type Snob&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VERY&lt;/strong&gt; specific text utility for curly quotes, real em and en dashes, etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/mmazzarolo/unicode-symbols&quot;&gt;Unicode Symbols Search&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t always search for unicode symbols, but when I do…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/destiner/unix-timestamp&quot;&gt;Unix Timestamp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Unix timestamps were created by the devil, so I guess this is really just a conduit to hell. But it’s a pretty cool one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/huzef44/url-tools&quot;&gt;URL Tools&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;URL encoding and decoding made fun and easy!!!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/jmaeso/uuid-generator&quot;&gt;UUID Generator&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Who does not need a UUID from time to time? No one, that’s who. If you think you don’t, well now you know why your life is falling apart.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/MarkusLanger/vscode-project-manager&quot;&gt;Visual Studio Code - Project Manager&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I genuinely have no idea why I have this instead of the general purpose Visual Studio Code extension. Maybe I was drinking beer the night I installed this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/warpdotdev/warp&quot;&gt;Warp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I LOVE WARP!!! I always forget I have this installed though. I know. I’m a loser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/nielsvanrijn/web-converter&quot;&gt;Web Converter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I do webby things a lot. I should probably try to remember I have this installed. “Hey, Scott. You have this installed.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/chrisalxlng/wordle&quot;&gt;Wordle&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I used to play this, but then I paid for Lex.games and have never looked back.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/koinzhang/world-clock&quot;&gt;World Clock&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Somewhere in the world, it’s X o’clock!! Find out where!! Also (and even cooler), put in an IP address and find out what time it is for whatever has that stupid IP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/tonka3000/youtube&quot;&gt;YouTube&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Search YouTube videos and channels like it’s 1999. I don’t know why I said that. I’m not even sure when YouTube was first created.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.raycast.com/vimtor/youtube-downloader&quot;&gt;YouTube Downloader&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Speaking of YouTube… download all of YouTube, one video at a time!!!!&lt;/p&gt;
&lt;h2 id=&quot;summarium&quot;&gt;Summarium&lt;/h2&gt;
&lt;p&gt;That’s pretty much it for now. I’m always open to revisiting things and uninstalling some things and installing other things. Most likely in a year from now, not much will have changed though.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I love Lex.games. Don’t even get me started. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Raycast has extensions, and I use some of them. Here they are!</summary></item><item><title>Weekly Reads</title><link>https://scottwillsey.com/weekly-reads</link><guid isPermaLink="true">https://scottwillsey.com/weekly-reads</guid><description>Instead of sending links to my dad one email at a time, behold, I now have a Weekly Reads page with RSS feed.</description><pubDate>Sat, 28 Sep 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My brother likes to send emails to dad and I containing links of interesting things he’s read recently, replete with commentary of his own. I used to send one link at a time to them, then I tried his approach, and now I generally send a link at a time again.&lt;/p&gt;
&lt;p&gt;Instead of this nonsense, I thought I’d create a &lt;a href=&quot;https://scottwillsey.com/reads/1/&quot;&gt;Weekly Reads page&lt;/a&gt; to add Weekly Reads posts to, complete with its own &lt;a href=&quot;https://scottwillsey.com/reads/rss.xml&quot;&gt;RSS feed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I may &lt;em&gt;call&lt;/em&gt; it Weekly Reads,  but I may add reads more than weekly or much less than weekly. I don’t know. Don’t pressure me! I have a lot going on! &lt;span role=&quot;img&quot; aria-label=&quot;smiling face with open mouth &amp;#x26; smiling eyes&quot;&gt;😄&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I need to create some links to it so people can find it and know it exists, but it’s there! It works!&lt;/p&gt;</content:encoded><summary>Instead of sending links to my dad one email at a time, behold, I now have a Weekly Reads page with RSS feed.</summary></item><item><title>Updated Sessions Raycast Script Command</title><link>https://scottwillsey.com/updated-sessions-script-command</link><guid isPermaLink="true">https://scottwillsey.com/updated-sessions-script-command</guid><description>A version of my Sessions Raycast script command using Moom layouts instead of Raycast Window Management layouts.</description><pubDate>Sun, 15 Sep 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you may know, &lt;a href=&quot;https://scottwillsey.com/sessions-script-command/&quot;&gt;I created a Raycast script command to trigger what I call “sessions”&lt;/a&gt;, which are really just setting up the Mac to perform different tasks, such as podcasting or “normal” general use. At the time, I was using Raycast for window management, so my script command referenced Raycast window management layouts. Now &lt;a href=&quot;https://scottwillsey.com/moom4/&quot;&gt;I’m using Moom&lt;/a&gt; for window management, so I needed to update it to call my Moom layouts instead.&lt;/p&gt;
&lt;p&gt;In the process, I decided to steal even more from &lt;a href=&quot;https://rknight.me&quot;&gt;Robb Knight&lt;/a&gt;’s &lt;a href=&quot;https://github.com/rknightuk/raycast-script-commands/blob/main/app-mode.sh&quot;&gt;App Mode Raycast script command&lt;/a&gt; and use his method of killing all apps before activating a session and having an array of default apps that I always want open. It’s almost the same exact script now.&lt;/p&gt;
&lt;p&gt;The updated version looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title Session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.icon /Users/scott/Scripts/Raycast/icons/app-mode.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;dropdown&quot;, &quot;placeholder&quot;: &quot;Session&quot;, &quot;data&quot;: [ { &quot;title&quot;: &quot;Home&quot;, &quot;value&quot;: &quot;home&quot; }, { &quot;title&quot;: &quot;IT&quot;, &quot;value&quot;: &quot;it&quot; }, { &quot;title&quot;: &quot;Podcast&quot;, &quot;value&quot;: &quot;podcast&quot; }, { &quot;title&quot;: &quot;Podcast Edit&quot;, &quot;value&quot;: &quot;podcastedit&quot; } ] }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Utils&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Set up a workflow session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;raycast://extensions/raycast/system/quit-all-applications&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;CORE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;1Password&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Messages&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mail&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;$1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;CORE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;]}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;home&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Warp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Microphone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Scripts/applescript/apply_moom_layout.scpt&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Home&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;it&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-chrome&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Google Chrome&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Warp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Slack&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Microphone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Scripts/applescript/apply_moom_layout.scpt&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;IT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Audio Hijack&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Farrago&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Bear&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;FaceTime&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elgato Wave XLR&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elgato Wave XLR&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Scripts/applescript/apply_moom_layout.scpt&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcastedit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast://script-commands/set-default-browser-safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Logic Pro X&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-a&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Finder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Documents/Podcasts/FwB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elgato Wave XLR&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Scripts/applescript/apply_moom_layout.scpt&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;PodcastEdit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Session# @raycast.mode fullOutput# Optional parameters:# @raycast.icon /Users/scott/Scripts/Raycast/icons/app-mode.png# @raycast.argument1 { &amp;#x22;type&amp;#x22;: &amp;#x22;dropdown&amp;#x22;, &amp;#x22;placeholder&amp;#x22;: &amp;#x22;Session&amp;#x22;, &amp;#x22;data&amp;#x22;: [ { &amp;#x22;title&amp;#x22;: &amp;#x22;Home&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;home&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;IT&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;it&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;Podcast&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;podcast&amp;#x22; }, { &amp;#x22;title&amp;#x22;: &amp;#x22;Podcast Edit&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;podcastedit&amp;#x22; } ] }# @raycast.packageName Utils# Documentation:# @raycast.description Set up a workflow session# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseyopen raycast://extensions/raycast/system/quit-all-applicationssleep 3CORE=(1Password Messages Mail Safari)TYPE=$1for value in &amp;#x22;${CORE[@]}&amp;#x22;do    open -a &amp;#x22;$value&amp;#x22;doneif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;home&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-safari&amp;#x27;    sleep 2    open -a Warp    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Speakers&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Microphone&amp;#x22; -t &amp;#x22;input&amp;#x22;    osascript ~/Scripts/applescript/apply_moom_layout.scpt &amp;#x22;Home&amp;#x22;        exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;it&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-chrome&amp;#x27;    sleep 2    open -a &amp;#x22;Google Chrome&amp;#x22;    open -a Warp    open -a Slack    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Speakers&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Microphone&amp;#x22; -t &amp;#x22;input&amp;#x22;    osascript ~/Scripts/applescript/apply_moom_layout.scpt &amp;#x22;IT&amp;#x22;        exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;podcast&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-safari&amp;#x27;    sleep 2    open -a &amp;#x22;Audio Hijack&amp;#x22;    open -a Farrago    open -a Bear    open -a FaceTime    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Elgato Wave XLR&amp;#x22;    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Elgato Wave XLR&amp;#x22; -t &amp;#x22;input&amp;#x22;    osascript ~/Scripts/applescript/apply_moom_layout.scpt &amp;#x22;Podcast&amp;#x22;        exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;podcastedit&amp;#x27; ]; then    open &amp;#x27;raycast://script-commands/set-default-browser-safari&amp;#x27;    sleep 2    open -a &amp;#x22;Logic Pro X&amp;#x22;    open -a Finder ~/Documents/Podcasts/FwB    /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Elgato Wave XLR&amp;#x22;    osascript ~/Scripts/applescript/apply_moom_layout.scpt &amp;#x22;PodcastEdit&amp;#x22;        exitfi&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can see that because my so-called “IT” session sets Chrome as the default browser, I’m compelled to set Safari as my default browser for every other session type. I supposed I could just move that out to the top and have it called no matter what, and then immediately reversed if the session type is “IT”. You can &lt;a href=&quot;https://scottwillsey.com/default-browser/&quot;&gt;read about my default browser script commands here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The reason for the sleep commands is that without them, running the Session script command would result in some timing issue in which only some of the apps would open, but not all of them. I was able to solve the problem by putting in a sleep after killing all applications and after setting the default browser.&lt;/p&gt;
&lt;p&gt;Calling Moom layouts using AppleScript commands (osascript) is possible because the author of Moom supports AppleScript calls to the program. I wish more programmers would think of their apps as potential links in a workflow chain like this.&lt;/p&gt;</content:encoded><summary>A version of my Sessions Raycast script command using Moom layouts instead of Raycast Window Management layouts.</summary></item><item><title>Moom 4</title><link>https://scottwillsey.com/moom4</link><guid isPermaLink="true">https://scottwillsey.com/moom4</guid><description>Mac window management tools are a dime a dozen, but Moom 4 stands out for its versatility and for being fun to use.</description><pubDate>Mon, 09 Sep 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You may have noticed, as you’ve wandered the site, that I’m a bit of a &lt;a href=&quot;https://scottwillsey.com/series/raycast/&quot;&gt;Raycast&lt;/a&gt; fan. You may, therefore, imagine that I use the &lt;a href=&quot;https://manual.raycast.com/window-management&quot;&gt;Raycast window management tools&lt;/a&gt; to move and arrange windows . And it’s true. Well, it was true. Then &lt;a href=&quot;https://manytricks.com&quot;&gt;Many Tricks&lt;/a&gt; released &lt;a href=&quot;https://manytricks.com/moom/&quot;&gt;Moom 4&lt;/a&gt;, the update to their popular Moom window manager app.&lt;/p&gt;
&lt;p&gt;Historically, I’m a window manager serial monogamist. Like any other type of utility, there’s a wide range of approaches to this task in the available third-party apps. Some let you draw your window size and location on the screen, some have keyboard shortcuts for instantly popping things into specific locations, some let you save multi-window layouts, and many various combinations of these things. Raycast does two of these things. Moom does all of these things.&lt;/p&gt;
&lt;p&gt;At first glance, you might think Moom is a slower way to manage windows. One of its signature controls is the Keyboard Controller, which you activate via a hotkey (in my case ^⌥⌘Space). Once it’s onscreen, you can use the keys indicated on its cheat sheet to move and/or resize your focused window per the options available.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MoomKeyboardController-07495684-089F-46D3-8304-853C1193C4F1.jpg&quot;&gt;&lt;img alt=&quot;Moom Keyboard Controller&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1258&quot; src=&quot;https://scottwillsey.com/_astro/MoomKeyboardController-07495684-089F-46D3-8304-853C1193C4F1.Bt3SR_5p_Z1JV8gn.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also customize the options that appear at the top of that list, and the bottom section will always show any actions you’ve assigned single-key hotkeys for. For example, based on my arrangement above, pop open the Keyboard Controller with ^⌥⌘Space and then hit 3 and you’ll move the foreground window to the left third size of the screen.&lt;/p&gt;
&lt;p&gt;Another great way that Moom allows for window control is something I think may be unique to it – a palette of window management buttons that shows up when you hover over one of the stoplight buttons in the window’s top left corner. You can specify in Moom’s settings which of the three buttons to hover over to get the palette, as well as which window commands are available.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MoomPaletteMenu-49C1E996-DDB4-4061-A4B6-4D0B405CC9D8.jpg&quot;&gt;&lt;img alt=&quot;Moom Palette Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1006&quot; src=&quot;https://scottwillsey.com/_astro/MoomPaletteMenu-49C1E996-DDB4-4061-A4B6-4D0B405CC9D8.CTcjyQoM_Z1yzY1b.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These are all great and dandy, but Moom has freeform sizing and moving options too. You can configure Moom hotkeys that allow you to glide the cursor over a window to move it or to resize it. These options sure beat trying to find an empty spot to click on a title bar filled with tabs, or to find the little grab handles at the edge of the window. Apple really hates onscreen controls and the native resizing controls can be slow to manipulate.&lt;/p&gt;
&lt;p&gt;And then there’s the grand champion of all freeform resizing, the Moom grid. It allows you to quickly draw out a window size to fit anywhere on a grid. You can set the number of rows and columns in the grid, which gives you quite a bit of range in window size granularity.&lt;/p&gt;
&lt;p&gt;Here’s what it looks like to drag out the shape you want to resize your window to on the grid:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MoomGridResize-9F890A70-1E35-43E0-A191-084DE3AA3BAE.jpg&quot;&gt;&lt;img alt=&quot;Moom Grid Resize&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1308&quot; src=&quot;https://scottwillsey.com/_astro/MoomGridResize-9F890A70-1E35-43E0-A191-084DE3AA3BAE.DqTY__3E_Z1Fc7us.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here’s the resulting resized Safari window.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MoomPostResize-9F890A70-1E35-43E0-A191-084DE3AA3BAE.jpg&quot;&gt;&lt;img alt=&quot;Moom Post Resize&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1170&quot; src=&quot;https://scottwillsey.com/_astro/MoomPostResize-9F890A70-1E35-43E0-A191-084DE3AA3BAE.w7XLOWV5_1bgsIY.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Despite all these great window management options, sometimes good old fashioned hotkey controlled instant resizing and moving is still the best way to quickly tile windows. Moom allows for that. You can create custom window sizes and locations and assign hotkeys to them. You can also make window layouts with multiple windows that can be applied instantly. Window layouts can be set to apply to specific apps only, or to whatever windows are handy when you apply the layout.&lt;/p&gt;
&lt;p&gt;You can see some of my window settings complete with hotkeys in my Moom settings window below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MoomSizePositionSettings-CF8C402F-38BD-4C3D-84AC-63A822FCBFC7.jpg&quot;&gt;&lt;img alt=&quot;Moom Size Position Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1374&quot; src=&quot;https://scottwillsey.com/_astro/MoomSizePositionSettings-CF8C402F-38BD-4C3D-84AC-63A822FCBFC7.BVIQxpcl_Z143lab.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And in a bit of good news for me, Moom commands can be activated via AppleScript. Thanks to this, I modified my &lt;a href=&quot;https://scottwillsey.com/sessions-script-command/&quot;&gt;Sessions Raycast script command&lt;/a&gt; to accommodate setting window layouts using Moom instead of using Raycast’s window management tools. I’ll show you that in a future post.&lt;/p&gt;
&lt;p&gt;I do like the window management commands in Raycast, and there’s always an argument for having one less application running in memory. But Moom is more versatile (and frankly more fun to use), and Raycast lets me disable its window management, and so Moom 4 seems like a no-brainer to me.&lt;/p&gt;
&lt;p&gt;At least for now.&lt;/p&gt;</content:encoded><summary>Mac window management tools are a dime a dozen, but Moom 4 stands out for its versatility and for being fun to use.</summary></item><item><title>The Green Economy Is Hungry for Copper-and People Are Stealing, Fighting, and Dying to Feed It</title><link>https://scottwillsey.com/toxic-bob</link><guid isPermaLink="true">https://scottwillsey.com/toxic-bob</guid><description>We technologists tend to ignore the downsides of technology and capitalism, and we shouldn&apos;t.</description><pubDate>Mon, 02 Sep 2024 20:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is not a normal topic for me on this site, but since I blather on about technology nonstop and make my living thanks to it, it’s important to highlight the very real downsides it brings. For example, the current push towards electrification of everything is ramping the planet’s need for copper, and copper means exploitation, death, and environmental disaster to people in many parts of the world.&lt;/p&gt;
&lt;p&gt;If this doesn’t sound very interesting, the human element of the story is intriguing. Just the part about Robert “Toxic Bob” Friedland illustrates how wild this story really is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;By the early 1980s Friedland had teamed up with some Vancouver-based financiers and moved into the world of mining, hustling for small gold outfits. He made headlines in 1992 when a Colorado gold mine he had previously overseen (as its parent company’s CEO) leaked toxic heavy metals into a nearby watershed, earning him the nickname “Toxic Bob.” In the meantime he had also discovered a major gold deposit in Alaska and an even bigger nickel deposit in Canada, which he later sold for more than $3 billion. Friedland has been a major player in the industry ever since. (He also has a sideline in movies, helping to produce Crazy Rich Asians and other films. Another fun Friedland fact: This summer, he bought a scenic California estate from Ellen DeGeneres for a trifling $96 million.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Interestingly, at one point this guy ran the commune Steve Jobs lived on in Oregon in the ’70’s. Steve eventually left, disillusioned with what he saw as Toxic Bob’s materialism. Not to put too fine a point on it, but Toxic Bob was far from the only hippy idealist who transformed into an uber capitalist, convincing themselves in the process that it was for the good of humanity and not just their own ballooning bank accounts.&lt;/p&gt;
&lt;p&gt;Linked post: &lt;a href=&quot;https://www.wired.com/story/power-metal-green-economy-is-hungry-for-copper/&quot;&gt;The Green Economy Is Hungry for Copper—and People Are Stealing, Fighting, and Dying to Feed It | WIRED&lt;/a&gt;&lt;/p&gt;</content:encoded><summary>We technologists tend to ignore the downsides of technology and capitalism, and we shouldn&apos;t.</summary></item><item><title>Automating Sessions with Raycast Script Commands</title><link>https://scottwillsey.com/sessions-script-command</link><guid isPermaLink="true">https://scottwillsey.com/sessions-script-command</guid><description>Using Raycast script commands to automate workflow sessions.</description><pubDate>Sun, 25 Aug 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the past, I &lt;a href=&quot;https://scottwillsey.com/bunch&quot;&gt;used a menubar utility called Bunch to start and stop my podcast session setup&lt;/a&gt;. But this was before I started using Raycast, and now that I already use Raycast to run lots of scripts and automations, I decided to do this with Raycast too.&lt;/p&gt;
&lt;p&gt;I took inspiration from &lt;a href=&quot;https://rknight.me&quot;&gt;Robb Knight&lt;/a&gt;’s &lt;a href=&quot;https://github.com/rknightuk/raycast-script-commands/blob/main/app-mode.sh&quot;&gt;App Mode Raycast script command&lt;/a&gt; and created one called Sessions. Like Robb’s, it uses a dropdown to choose what “session” I want to run. It’s a bit of a weird name, I guess, because I have one called “Stop Podcasting”, which doesn’t really seem like a session, but more like a lack of a session.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastSessions-CF8861EF-1B5E-4EF1-BC60-5C2C4F914FCF.jpg&quot;&gt;&lt;img alt=&quot;Raycast Sessions Script Command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1110&quot; src=&quot;https://scottwillsey.com/_astro/RaycastSessions-CF8861EF-1B5E-4EF1-BC60-5C2C4F914FCF.DkDqXzMo_Z1hJJpW.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I run the Sessions script command, I currently have two choices: Podcasting or Stop Podcasting.&lt;/p&gt;
&lt;p&gt;The Podcasting option runs a &lt;a href=&quot;https://manual.raycast.com/window-management&quot;&gt;Raycast Window Management Command&lt;/a&gt; which opens specific apps (&lt;a href=&quot;https://rogueamoeba.com/audiohijack/&quot;&gt;Audio Hijack&lt;/a&gt;, &lt;a href=&quot;https://rogueamoeba.com/farrago/&quot;&gt;Farrago&lt;/a&gt;, Safari, &lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; and FaceTime) and puts their windows in specific locations on the screen using a preset &lt;a href=&quot;https://www.raycast.com/changelog/1-78-0&quot;&gt;Window Layout&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is what the Raycast Window Layout Command looks like. The apps are Audio Hijack (top left), Farrago (bottom left), Bear (center), FaceTime (top right), and Safari (right half).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/PodcastSessionWindowLayoutCommand-0CA11E69-7B62-4A38-908A-909B5865B25C.jpg&quot;&gt;&lt;img alt=&quot;Podcast Session Window Layout Command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1180&quot; src=&quot;https://scottwillsey.com/_astro/PodcastSessionWindowLayoutCommand-0CA11E69-7B62-4A38-908A-909B5865B25C.m04Wq4rs_Z1rk4uM.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The script command also sets the audio output to my &lt;a href=&quot;https://www.elgato.com/us/en/p/wave-xlr&quot;&gt;Elgato Wave XLR&lt;/a&gt;, which has my podcasting headphones plugged into it, and sets the audio input to a &lt;a href=&quot;https://rogueamoeba.com/loopback/&quot;&gt;Loopback&lt;/a&gt; audio device that combines my &lt;a href=&quot;https://www.shure.com/en-US/products/microphones/beta_87a?variant=BETA87A&quot;&gt;podcasting mic&lt;/a&gt; and &lt;a href=&quot;https://rogueamoeba.com/farrago/&quot;&gt;Farrago&lt;/a&gt; soundboard into one input device. Finally, it starts an &lt;a href=&quot;https://apps.apple.com/us/app/amphetamine/id937984704?mt=12&quot;&gt;Amphetamine&lt;/a&gt; session, which keeps the display from sleeping if I don’t touch the mouse or keyboard for awhile while podcasting, and toggles my desk lamps on using a Shortcuts shortcut.&lt;/p&gt;
&lt;p&gt;Here’s what it looks like on my Apple Studio Display after running the Sessions script command:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/PodcastSessionLayout-0CA11E69-7B62-4A38-908A-909B5865B25C.jpg&quot;&gt;&lt;img alt=&quot;Podcast Session Window Layout in Action&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1012&quot; src=&quot;https://scottwillsey.com/_astro/PodcastSessionLayout-0CA11E69-7B62-4A38-908A-909B5865B25C.DxTOeNJL_Z2aepVj.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Stop Podcasting option sets the audio output and input to my Studio Display’s speakers and mic, closes Audio Hijack, Farrago, Bear, and FaceTime, centers Safari on the screen again, and stops the Amphetamine session. It also toggles the desk lamps.&lt;/p&gt;
&lt;p&gt;Here’s the full script command:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title Sessions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode silent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.icon ../icons/app-mode.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;dropdown&quot;, &quot;placeholder&quot;: &quot;Choose Mode&quot;, &quot;data&quot;: [ { &quot;title&quot;: &quot;Podcasting&quot;, &quot;value&quot;: &quot;podcasting&quot; }, {&quot;title&quot;: &quot;Stop Podcasting&quot;, &quot;value&quot;: &quot;stopp&quot;} ] }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Utils&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Set apps and devices for specific work session types&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;$1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcasting&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elgato Wave XLR&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Shure Beta 87a &amp;#x26; Farrago&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;raycast://customWindowManagementCommand?name=Podcasting&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;shortcuts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott Desk Lamps Toggle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;tell application &quot;Amphetamine&quot; to start new session with options {duration:3, interval:hours, displaySleepAllowed:false}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$TYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;stopp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;/opt/homebrew/bin/SwitchAudioSource&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Studio Display Microphone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;quit app &quot;Farrago&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;quit app &quot;Bear&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;quit app &quot;Audio Hijack&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;quit app &quot;FaceTime&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;shortcuts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott Desk Lamps Toggle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;raycast://customWindowManagementCommand?name=Safari%20Center&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;osascript&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-e&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;tell application &quot;Amphetamine&quot; to end session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Sessions# @raycast.mode silent# Optional parameters:# @raycast.icon ../icons/app-mode.png# @raycast.argument1 { &amp;#x22;type&amp;#x22;: &amp;#x22;dropdown&amp;#x22;, &amp;#x22;placeholder&amp;#x22;: &amp;#x22;Choose Mode&amp;#x22;, &amp;#x22;data&amp;#x22;: [ { &amp;#x22;title&amp;#x22;: &amp;#x22;Podcasting&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;podcasting&amp;#x22; }, {&amp;#x22;title&amp;#x22;: &amp;#x22;Stop Podcasting&amp;#x22;, &amp;#x22;value&amp;#x22;: &amp;#x22;stopp&amp;#x22;} ] }# @raycast.packageName Utils# Documentation:# @raycast.description Set apps and devices for specific work session types# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseyTYPE=$1if [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;podcasting&amp;#x27; ]; then /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Elgato Wave XLR&amp;#x22; /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Shure Beta 87a &amp;#x26; Farrago&amp;#x22; -t &amp;#x22;input&amp;#x22;    open raycast://customWindowManagementCommand?name=Podcasting    shortcuts run &amp;#x22;Scott Desk Lamps Toggle&amp;#x22;    osascript -e &amp;#x27;tell application &amp;#x22;Amphetamine&amp;#x22; to start new session with options {duration:3, interval:hours, displaySleepAllowed:false}&amp;#x27; exitfiif [ &amp;#x22;$TYPE&amp;#x22; = &amp;#x27;stopp&amp;#x27; ]; then /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Speakers&amp;#x22; /opt/homebrew/bin/SwitchAudioSource -s &amp;#x22;Studio Display Microphone&amp;#x22; -t &amp;#x22;input&amp;#x22;    osascript -e &amp;#x27;quit app &amp;#x22;Farrago&amp;#x22;&amp;#x27;    osascript -e &amp;#x27;quit app &amp;#x22;Bear&amp;#x22;&amp;#x27;    osascript -e &amp;#x27;quit app &amp;#x22;Audio Hijack&amp;#x22;&amp;#x27;    osascript -e &amp;#x27;quit app &amp;#x22;FaceTime&amp;#x22;&amp;#x27;    shortcuts run &amp;#x22;Scott Desk Lamps Toggle&amp;#x22;    open raycast://customWindowManagementCommand?name=Safari%20Center    osascript -e &amp;#x27;tell application &amp;#x22;Amphetamine&amp;#x22; to end session&amp;#x27; exitfi&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Raycast script commands can be written in bash script, Apple Script, Swift, Python, Ruby, or JavaScript (Node.js). This one is a bash script, and the Podcasting option very simply uses bash commands to run a bunch of other utilities: SwitchAudioSource, to set audio output and input, a Raycast custom window management command to open my podcast session apps and place their windows per a custom layout, a shortcut to toggle my desk lamps, and finally an inline Apple Script (osascript) to start an Amphetamine app session so the display can’t sleep.&lt;/p&gt;
&lt;p&gt;The Stop Podcasting option runs similar commands plus several Apple Script calls to close the apps that were opened by the Raycast custom window layout in the Podcasting option.&lt;/p&gt;
&lt;p&gt;Script commands are both a great reason to use Raycast and a great tool for automation if you already do use Raycast.&lt;/p&gt;</content:encoded><summary>Using Raycast script commands to automate workflow sessions.</summary></item><item><title>Pseudo-Automating the Listened to Podcasts List on My /now Page</title><link>https://scottwillsey.com/podcast-history</link><guid isPermaLink="true">https://scottwillsey.com/podcast-history</guid><description>Using Python to retrieve and parse my Overcast listening history.</description><pubDate>Sat, 03 Aug 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you know, I have a &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page that I update on occasion to let anyone who cares know what kinds of things I’m watching, reading, and eating at some random point in my life. So far, it’s been a very manual update process because I haven’t had time to start automating any of it until now.&lt;/p&gt;
&lt;p&gt;I’ve taken inspiration from &lt;a href=&quot;https://rknight.me&quot;&gt;Robb Knight&lt;/a&gt;’s video &lt;a href=&quot;https://www.youtube.com/watch?v=e_87IF7KGgo&quot;&gt;Using Eleventy to Gobble Up Everything I Do Online&lt;/a&gt;, particularly for the Overcast part of the automation process. I watched enough of the video to see Robb mention the extended version of the Overcast OPML file you can download from your Overcast account that includes episode history and decided to write a script that would automate downloading and parsing it for me.&lt;/p&gt;
&lt;p&gt;Enter &lt;strong&gt;overcast-history&lt;/strong&gt;, my python script for checking to see when I last downloaded the OPML file, getting a new copy if needed, and parsing it if a new copy was downloaded (or if I passed it the -f flag to force it to parse the local OPML file anyway).&lt;/p&gt;
&lt;p&gt;You might be thinking “hold on here, Robb also wrote a Python script, don’t act like you’re inventing the wheel!”, and that’s a fair point. I actually thought he was manually downloading his OPML file until I finished the video today (after writing my own Python script). Now I realize he’s at a high level of automation on this task.&lt;/p&gt;
&lt;p&gt;Another key difference between Robb’s approach and mine so far, besides the fact that our Python scripts are completely different&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, is that I believe he creates a JSON file with it and consumes that as part of his site build process to completely automatically update his listen history.&lt;/p&gt;
&lt;p&gt;In contrast to Robb, I’m not very automated with my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; page yet. This python script is part of a collection of tools for quickly automating certain aspects of updating my site, which I build locally and ftp to my server. I haven’t decided yet how much I want to automate the build process again.&lt;/p&gt;
&lt;p&gt;Therefore, with the understanding that this is ONLY an example of how to grab and parse information off the internet, and with the understanding that my Python coding skills are shaky at best, here’s my approach to getting recently listened to podcast episodes from my Overcast history into a Markdown list.&lt;/p&gt;
&lt;h2 id=&quot;overcast-history&quot;&gt;overcast-history&lt;/h2&gt;
&lt;p&gt;You’ll see immediately that I’m a terrible Python programmer and that I have no idea what Python best practices are yet. I have 6 files to do this one simple task:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;constants.py (purpose of which should be self-evident)&lt;/li&gt;
&lt;li&gt;session.py (used to keep the overcast login active across modules)&lt;/li&gt;
&lt;li&gt;main.py (entry point script that gets run directly to make it all happen)&lt;/li&gt;
&lt;li&gt;oc_login.py (logs in to my Overcast account)&lt;/li&gt;
&lt;li&gt;oc_history.py (handles downloading the extended OPML file from my Overcast account)&lt;/li&gt;
&lt;li&gt;oc_opml_parse.py (parses the OPML file and gives me the recent list of podcast episodes I want)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;constants.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ACCOUNT_URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://overcast.fm/account&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ACCOUNT_PATH&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/account&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;LOGIN_URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://overcast.fm/login?then=account&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;EMAIL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;xxxxxxxxxx@gmail.com&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;PASSWORD&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;xxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;LOGIN_PATH&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_LINK&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://overcast.fm/account/export_opml/extended&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;SUCCESS&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;TOO_MANY_REQUESTS&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;429&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcast_history.opml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;NUMBER_OF_EPISODES&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;ACCOUNT_URL = &amp;#x27;https://overcast.fm/account&amp;#x27;ACCOUNT_PATH = &amp;#x27;/account&amp;#x27;LOGIN_URL = &amp;#x27;https://overcast.fm/login?then=account&amp;#x27;EMAIL = &amp;#x27;xxxxxxxxxx@gmail.com&amp;#x27;PASSWORD = &amp;#x27;xxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;#x27;LOGIN_PATH = &amp;#x27;/login&amp;#x27;OPML_AGE_LIMIT_DAYS = 2OPML_LINK = &amp;#x27;https://overcast.fm/account/export_opml/extended&amp;#x27;SUCCESS = 200TOO_MANY_REQUESTS = 429OPML_FILE_PATH = &amp;#x27;overcast_history.opml&amp;#x27;NUMBER_OF_EPISODES = 10&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Right away I’ve made you cry. Yes, I have my Overcast account password in my constants file. THIS WILL BE REMEDIED SOON! I plan to use &lt;a href=&quot;https://pypi.org/project/keyring/&quot;&gt;keyring&lt;/a&gt; to fix this issue. Maybe. Probably.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;session.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; requests&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;session &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; requests&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;Session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import requestssession = requests.Session()&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This one creates a &lt;a href=&quot;https://github.com/psf/requests&quot;&gt;requests&lt;/a&gt; session object which can then be imported into any other modules that need to use requests to grab stuff. That’s it. There’s probably a way better way to do this that I should know about.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;main.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/Users/scott/Scripts/python/venv/bin/python&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; argparse&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; timedelta&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_history &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; load_oc_history&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_opml_parse &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_opml_parse&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;p &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; argparse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ArgumentParser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;add_argument&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;--force&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;store_true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;help&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Force local OPML file parsing&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;args &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;parse_args&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;file_is_old&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;exists&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_mod_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;getmtime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;display_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromtimestamp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_mod_date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file created on &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;display_date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;strftime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromtimestamp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_mod_date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;file_datetime = &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;file_datetime&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;stale_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;timedelta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;days&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;stale_date = &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;stale_date&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; file_datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; stale_date&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;history_was_loaded &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;file_is_old&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file is older than &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; days or doesn&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;t exist. Downloading new data...&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;history_was_loaded &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load_oc_history&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file is less than &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; days old. Skipping download.&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; history_was_loaded &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; args&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;force&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Parsing OPML file...&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;oc_opml_parse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;():&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Done!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;You have to update your podcast list manually, dude.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;No new Overcast history generated.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#6CB6FF&quot;&gt;__name__&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;__main__&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/Users/scott/Scripts/python/venv/bin/pythonimport argparseimport osfrom datetime import datetime, timedeltaimport constants as constfrom oc_history import load_oc_historyfrom oc_opml_parse import oc_opml_parsep = argparse.ArgumentParser()p.add_argument(&amp;#x27;-f&amp;#x27;, &amp;#x27;--force&amp;#x27;, action=&amp;#x27;store_true&amp;#x27;, help=&amp;#x27;Force local OPML file parsing&amp;#x27;)args = p.parse_args()def file_is_old(file_path):    if not os.path.exists(file_path):        return True    file_mod_date = os.path.getmtime(file_path)    display_date = datetime.fromtimestamp(file_mod_date)    print(f&amp;#x27;OPML file created on {display_date.strftime(&amp;#x22;%Y-%m-%d&amp;#x22;)}&amp;#x27;)    file_datetime = datetime.fromtimestamp(file_mod_date)    print(f&amp;#x27;file_datetime = {file_datetime}&amp;#x27;)    stale_date = datetime.now() - timedelta(days=const.OPML_AGE_LIMIT_DAYS)    print(f&amp;#x27;stale_date = {stale_date}&amp;#x27;)    return file_datetime &lt; stale_datedef main():    history_was_loaded = False    if file_is_old(const.OPML_FILE_PATH):        print(f&amp;#x27;OPML file is older than {const.OPML_AGE_LIMIT_DAYS} days or doesn\&amp;#x27;t exist. Downloading new data...&amp;#x27;)        history_was_loaded = load_oc_history()    else:        print(f&amp;#x27;OPML file is less than {const.OPML_AGE_LIMIT_DAYS} days old. Skipping download.&amp;#x27;)    if history_was_loaded or args.force:        print(&amp;#x27;Parsing OPML file...&amp;#x27;)        if oc_opml_parse():            print(&amp;#x27;Done!&amp;#x27;)        else:            print(&amp;#x27;You have to update your podcast list manually, dude.&amp;#x27;)    else:        print(&amp;#x27;No new Overcast history generated.&amp;#x27;)if __name__ == &amp;#x22;__main__&amp;#x22;:    main()&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I run main.py as the script entry point and it gets all the work going. It checks to see if the date of my copy of the OPML file is older than the value in the OPML_AGE_LIMIT_DAYS constant and redownloads it if so, using the load_oc_history() function from oc_history.py.&lt;/p&gt;
&lt;p&gt;If a new OPML file was downloaded OR I ran main.py with the -f flag, then it parses the OPML file by running the oc_opml_parse() function in oc_opml_parse.py.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;oc_login.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;oc_login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;oc_test_login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;():&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;oc_enter_login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Attempting login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;LOGIN_URL&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;email&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;EMAIL&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;PASSWORD&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;Response &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;status_code&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;status_code&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;SUCCESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Successfully logged in&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Failed login attempt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;oc_test_login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Testing login status&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;ACCOUNT_URL&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;ACCOUNT_PATH&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Already logged in&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;LOGIN_PATH&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Login required&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;oc_enter_login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;():&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;I have no idea what happened&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;url&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import osimport constants as constfrom session import sessiondef oc_login():    if oc_test_login():        return True    else:        return Falsedef oc_enter_login():    print(&amp;#x27;Attempting login&amp;#x27;)    r = session.post(const.LOGIN_URL, data={&amp;#x27;email&amp;#x27;: const.EMAIL, &amp;#x27;password&amp;#x27;: const.PASSWORD})    print(f&amp;#x22;Response {r.status_code}&amp;#x22;)    if r.status_code == const.SUCCESS:        print(&amp;#x22;Successfully logged in&amp;#x22;)        return True    else:        print(&amp;#x22;Failed login attempt&amp;#x22;)        return Falsedef oc_test_login():    print(&amp;#x27;Testing login status&amp;#x27;)    r = session.get(const.ACCOUNT_URL)    if const.ACCOUNT_PATH in r.url:        print(&amp;#x27;Already logged in&amp;#x27;)        return True    elif const.LOGIN_PATH in r.url:        print(&amp;#x27;Login required&amp;#x27;)        if oc_enter_login():            return True    else:        print(f&amp;#x22;I have no idea what happened\n{r.url}&amp;#x22;)    return False&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Right now this doesn’t make sense, but if I actually store auth tokens somewhere later, maybe it will. Right now it always checks to see if I’m logged in or not by checking to see if I stayed on the /account page or got bounced back to the /login page. If I got bounced back, it logs me in.&lt;/p&gt;
&lt;p&gt;The reason it doesn’t make sense is I don’t persist any login tokens across script runs, so if I need to download an OPML file, it’s always going to need to log into my Overcast account. I may just keep that workflow and simplify this script to not even check instead, and just admit it’s going login to the account every time.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;oc_history.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_login &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; oc_login&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;load_oc_history&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;oc_login&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;():&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Couldn&apos;t log in to Overcast.fm account!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Loading history...&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; session&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_LINK&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;Response &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;status_code&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;status_code&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;SUCCESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;OPML file downloaded&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;file_path &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcast_history.opml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;utf-8&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;OPML file saved to &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;abspath&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;file_path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;IOError&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; e&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Error saving OPML file: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;TOO_MANY_REQUESTS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Too many requests - Retry-After = &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Retry-After&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; _&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;Unexpected status code: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;status_code&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;False&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import osimport constants as constfrom session import sessionfrom oc_login import oc_logindef load_oc_history():    if not oc_login():        print(&amp;#x22;Couldn&amp;#x27;t log in to Overcast.fm account!&amp;#x22;)        return False    print(&amp;#x22;Loading history...&amp;#x22;)    r = session.get(const.OPML_LINK)    print(f&amp;#x22;Response {r.status_code}&amp;#x22;)    match r.status_code:        case const.SUCCESS:            print(&amp;#x27;OPML file downloaded&amp;#x27;)            file_path = &amp;#x27;overcast_history.opml&amp;#x27;            try:                with open(file_path, &amp;#x27;w&amp;#x27;, encoding=&amp;#x27;utf-8&amp;#x27;) as file:                    file.write(r.text)                print(f&amp;#x27;OPML file saved to {os.path.abspath(file_path)}&amp;#x27;)                return True            except IOError as e:                print(f&amp;#x27;Error saving OPML file: {e}&amp;#x27;)        case const.TOO_MANY_REQUESTS:            print(r.headers)            print(f&amp;#x27;Too many requests - Retry-After = {r.headers.get(&amp;#x27;Retry-After&amp;#x27;)}&amp;#x27;)        case _:            print(f&amp;#x27;Unexpected status code: {r.status_code}&amp;#x27;)    return False&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is pretty simple. I download the OPML file and it either downloads ok or it doesn’t. It’s funny that I have the file name hardcoded here but I use constants for everything else. I’ll have to fix that.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;oc_opml_parse.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; pyperclip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; xml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;etree&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;ElementTree&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ET&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; constants &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; timezone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; timedelta&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;find_podcast_name&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;episode_id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; podcast &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.//outline[@type=&apos;rss&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;outline[@type=&apos;podcast-episode&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; episode_id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Unknown&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;oc_opml_parse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;content &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;content &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;FileNotFoundError&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;File not found: &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_FILE_PATH&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;None&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;root &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;ET&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;fromstring&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Find all podcast episode entries&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.//outline[@type=&apos;podcast-episode&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;current_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;timezone&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;utc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Filter episodes with played=&quot;1&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# played_episodes = [ep for ep in episodes if ep.get(&apos;played&apos;) == &apos;1&apos;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;played_episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; episodes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;played&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;current_date &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;strptime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;userUpdatedDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;T%H:%M:%S%z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)).&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;days&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;OPML_AGE_LIMIT_DAYS&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Sort episodes by userUpdatedDate, most recent first&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;played_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF&quot;&gt;lambda&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;strptime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;userUpdatedDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;%Y-%m-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;%d&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;T%H:%M:%S%z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;reverse&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the most recent episodes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;top_episodes &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; played_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;[:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#6CB6FF&quot;&gt;NUMBER_OF_EPISODES&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Print the results&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ep &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; top_episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;- [&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;find_podcast_name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastId&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt; – &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;overcastUrl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# print(f&quot;Title: {ep.get(&apos;title&apos;)}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# print(f&quot;Updated Date: {ep.get(&apos;userUpdatedDate&apos;)}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# print(f&quot;URL: {ep.get(&apos;url&apos;)}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# print(f&quot;Overcast URL: {ep.get(&apos;overcastUrl&apos;)}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# podcast_name = find_podcast_name(root, ep.get(&apos;overcastId&apos;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# print(f&quot;Podcast: {podcast_name}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# print(&quot;---&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;episodes_list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000;--2:#ADBAC7&quot;&gt;episodes_list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;True&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import pyperclipimport xml.etree.ElementTree as ETimport constants as constfrom datetime import datetime, timezone, timedeltadef find_podcast_name(root, episode_id):    for podcast in root.findall(&amp;#x22;.//outline[@type=&amp;#x27;rss&amp;#x27;]&amp;#x22;):        for ep in podcast.findall(&amp;#x22;outline[@type=&amp;#x27;podcast-episode&amp;#x27;]&amp;#x22;):            if ep.get(&amp;#x27;overcastId&amp;#x27;) == episode_id:                return podcast.get(&amp;#x27;text&amp;#x27;)    return &amp;#x22;Unknown&amp;#x22;def oc_opml_parse():    with open(const.OPML_FILE_PATH, &amp;#x27;r&amp;#x27;) as f:        content = f.read()    try:        with open(const.OPML_FILE_PATH, &amp;#x27;r&amp;#x27;) as f:            content = f.read()    except FileNotFoundError:        print(f&amp;#x22;File not found: {const.OPML_FILE_PATH}&amp;#x22;)        return None    root = ET.fromstring(content)    # Find all podcast episode entries    episodes = root.findall(&amp;#x22;.//outline[@type=&amp;#x27;podcast-episode&amp;#x27;]&amp;#x22;)    current_date = datetime.now(timezone.utc)    # Filter episodes with played=&amp;#x22;1&amp;#x22;    # played_episodes = [ep for ep in episodes if ep.get(&amp;#x27;played&amp;#x27;) == &amp;#x27;1&amp;#x27;]    played_episodes = [        ep for ep in episodes        if ep.get(&amp;#x27;played&amp;#x27;) == &amp;#x27;1&amp;#x27; and        (current_date - datetime.strptime(ep.get(&amp;#x27;userUpdatedDate&amp;#x27;), &amp;#x22;%Y-%m-%dT%H:%M:%S%z&amp;#x22;)).days &lt;= (const.OPML_AGE_LIMIT_DAYS + 1)    ]    # Sort episodes by userUpdatedDate, most recent first    played_episodes.sort(key=lambda ep: datetime.strptime(ep.get(&amp;#x27;userUpdatedDate&amp;#x27;), &amp;#x22;%Y-%m-%dT%H:%M:%S%z&amp;#x22;), reverse=True)    # Get the most recent episodes    top_episodes = played_episodes[:const.NUMBER_OF_EPISODES]    # Print the results    episodes_list = &amp;#x22;&amp;#x22;    for ep in top_episodes:        episodes_list += f&amp;#x22;- [{find_podcast_name(root, ep.get(&amp;#x27;overcastId&amp;#x27;))} – {ep.get(&amp;#x27;title&amp;#x27;)}]({ep.get(&amp;#x27;overcastUrl&amp;#x27;)})\n&amp;#x22;        # print(f&amp;#x22;Title: {ep.get(&amp;#x27;title&amp;#x27;)}&amp;#x22;)        # print(f&amp;#x22;Updated Date: {ep.get(&amp;#x27;userUpdatedDate&amp;#x27;)}&amp;#x22;)        # print(f&amp;#x22;URL: {ep.get(&amp;#x27;url&amp;#x27;)}&amp;#x22;)        # print(f&amp;#x22;Overcast URL: {ep.get(&amp;#x27;overcastUrl&amp;#x27;)}&amp;#x22;)        # podcast_name = find_podcast_name(root, ep.get(&amp;#x27;overcastId&amp;#x27;))        # print(f&amp;#x22;Podcast: {podcast_name}&amp;#x22;)        # print(&amp;#x22;---&amp;#x22;)    print(episodes_list)    pyperclip.copy(episodes_list)    return True&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is the longest one and probably the one where my meager Pythoning probably should embarrass me the most. This parses the OPML file as XML and grabs information about any podcast episodes newer than a certain date (hint: the value of OPML_AGE_LIMIT_DAYS plus 1 day) and then sorts them by the userUpdatedDate value from that episode’s data. After that, it’s just creating a Markdown list of the episodes that match the date and listened to criteria, and copying that list to the clipboard using pyperclip.&lt;/p&gt;
&lt;p&gt;I have a Raycast Script Command I can run this from, but obviously in the future it would be better to integrate it more into the site build process itself.&lt;/p&gt;
&lt;p&gt;I assume you’re a Python genius compared to me, so &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;please let me know&lt;/a&gt; if you have any improvement suggestions beyond the ones I’ve already mentioned.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I haven’t looked at his yet, but I assume they are different since I assume he’s a much better Python programmer than I am! &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Using Python to retrieve and parse my Overcast listening history.</summary></item><item><title>Raycast Script Command for Image Link Transformation</title><link>https://scottwillsey.com/raycast-sc-image-link-transform</link><guid isPermaLink="true">https://scottwillsey.com/raycast-sc-image-link-transform</guid><description>It&apos;s Yet Another Raycast Script Command, this time one for tranforming blog post image links to match image file locations in Astro.</description><pubDate>Mon, 08 Jul 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of my blogging workflow chores is to make sure my image links are correct for where images (both full-sized and optimized versions) are stored in my Astro project. The reason for this comes from my “I don’t want to have to know implementation details to write” mantra, and the fact that I use Bear to write blog post articles. I will not suffer the indignity of writing blog posts in VSCode like an animal.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Bear is nice for inserting images into articles – just drag and drop. But Bear also then makes the image relative to the article itself in terms of image file path, like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;![](AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.png)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;![](AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.png)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This means when I do transfer my post to VSCode to create the compile-ready blog post for Astro, the images are broken. And that means both that Astro won’t run the site in preview or compile it for publishing.&lt;/p&gt;
&lt;p&gt;You may think that something similar to my &lt;a href=&quot;https://scottwillsey.com/remark-socials/&quot;&gt;remark plugin that transforms my social media links&lt;/a&gt; would be the answer, but that doesn’t work – the broken image links for image asset imports cause Astro errors way before remark can get to it. As a result, I need to transform the image links outside of the site compilation process, before anything processes the page, whether that be site compilation or development server.&lt;/p&gt;
&lt;p&gt;Enter yet another Raycast Script Command. I call this one Astrosize ScottWillsey blog post image links.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.jpg&quot;&gt;&lt;img alt=&quot;AstrosizeBlogImage&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1126&quot; src=&quot;https://scottwillsey.com/_astro/AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.Dm--9pdI_ZeG3TB.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s written in JavaScript, which means Raycast will run it with Node, and it looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;astrosize-scottwillsey-blog-post-image-links.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/usr/bin/env node&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.title Astrosize ScottWillsey blog post image links&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.icon&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.packageName Website&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.description Convert blog post image and media links for ScottWillsey.com posts from Bear local links to correct Astro asset image links&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;fakefs&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;fakefs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;fakepath&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;fakepath&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Function to modify content&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;formatImageLinks&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#811F3F;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;!&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;0-9A-F&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{8}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;0-9A-F&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{4}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;0-9A-F&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{4}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;0-9A-F&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{4}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;0-9A-F&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{12}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;//var regex = /!\[\]\(((\w+)-[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\.png)\)/g;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacement&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;[![$2](../../assets/images/posts/$1$3)](/images/posts/$1jpg)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;resultString&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacement&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;resultString&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Directory where the posts are stored&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;postsDirectory&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/content/posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Function to read the directory and find the most recent file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;updateMostRecentFile&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;fakefs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;readfakedir&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;postsDirectory&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;withFileTypes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FF9CAC;--1:#0000FF;--2:#6CB6FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;},&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;fakeFiles&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Filter for files and sort by modification time&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mostRecentFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fakeFiles&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;fakeFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fakeFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;isDirectory&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;())&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;fakeFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fakeFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;statSync&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fakepath&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;postsDirectory&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fakeFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mtime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getTime&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;)[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mostRecentFile&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;No files found in the directory.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Construct the full path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;filePath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fakepath&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;postsDirectory&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mostRecentFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Read the content of the most recent file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;fakefs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;readfakeFile&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;filePath&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;utf8&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Use the formatImageLinks function to modify the content&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;modifiedContent&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;formatImageLinks&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Write the modified content back to the file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;fakefs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;writeFakeFile&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;filePath&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;modifiedContent&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;File has been updated.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Execute the function&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;updateMostRecentFile&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {        if (err) return console.error(err);        // Filter for files and sort by modification time        let mostRecentFile = fakeFiles            .filter(fakeFile =&gt; !fakeFile.isDirectory())            .map(fakeFile =&gt; ({ name: fakeFile.name, time: fs.statSync(fakepath.join(postsDirectory, fakeFile.name)).mtime.getTime() }))            .sort((a, b) =&gt; b.time - a.time)[0];        if (!mostRecentFile) {            console.log(&amp;#x27;No files found in the directory.&amp;#x27;);            return;        }        // Construct the full path        const filePath = fakepath.join(postsDirectory, mostRecentFile.name);        // Read the content of the most recent file        fakefs.readfakeFile(filePath, &amp;#x27;utf8&amp;#x27;, (err, data) =&gt; {            if (err) return console.error(err);            // Use the formatImageLinks function to modify the content            const modifiedContent = formatImageLinks(data);            // Write the modified content back to the file            fakefs.writeFakeFile(filePath, modifiedContent, err =&gt; {                if (err) return console.error(err);                console.log(&amp;#x27;File has been updated.&amp;#x27;);            });        });    });}// Execute the functionupdateMostRecentFile();&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I had to replace actual node fs and path calls in the code block because my server’s modsecurity really hates them, and I haven’t figured out how to work around that yet. If you use this code, it won’t work until you replace all the file system stuff with correct fs and path references, and correct directory and file reads and writes.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Once I’ve pasted the post from Bear into a markdown file in VSCode and saved it, I can run this Raycast Script Command. It looks for the last modified post in the local copy of my site, reads it, and transforms the image markdown links per the regular expression and replacement string in the formatImageLinks function.&lt;/p&gt;
&lt;p&gt;The transformation itself does two things: it adds the correct file path so Astro can find the image, and it also makes a markdown hyperlink to the full-sized version of the image. It can do this because when I create images for my blog posts, I run yet another Raycast Script Command to create two copies of the image, one full-sized PNG image that goes in &lt;code&gt;/src/assets/images/posts&lt;/code&gt;, and one slightly more optimized JPG image that goes in &lt;code&gt;/public/images/posts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The PNG image that goes in assets is imported and optimized by &lt;a href=&quot;https://docs.astro.build/en/guides/images/#images-in-markdown-files&quot;&gt;Astro’s Image Service API&lt;/a&gt;.  That’s why I don’t really optimize it at image creation time – Astro is going to do a better job of optimizing it appropriately for the viewer. It is the image that gets displayed in the blog post. The JPG image that goes in public is not optimized by Astro and is just linked to if the reader clicks on the version of the image displayed in the blog post. Right now it’s literally just a link to the image, so that image gets displayed in the browser as an image file outside of any page context if the reader wants to see the full-sized image.&lt;/p&gt;
&lt;p&gt;The result of Astrosize ScottWillsey blog post image links Script Command is that the link goes from this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;![](AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.png)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;![](AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.png)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;To this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;[![Astrosize ScottWillsey Blog Post Image Links](../../assets/images/posts/AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.png)](/images/posts/AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.jpg)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[![Astrosize ScottWillsey Blog Post Image Links](../../assets/images/posts/AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.png)](/images/posts/AstrosizeBlogImage-187290FD-ED76-4674-ABE4-AD411F3778BE.jpg)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;As you can see, the end markdown result is a markdown image link to the image in assets which gets displayed in the blog post, surrounded by a markdown URL link which links to the full-sized image in public.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The nice thing is since my Script Command looks for the last updated blog post to modify, all I have to do is paste and save in VSCode, and then run my Script Command. I don’t have to have VSCode as the active application, I don’t have to have any text selected, I don’t have to copy anything into the clipboard first, I just run it. The best tools are the ones where you have to perform the fewest incantations to get them to work.&lt;/p&gt;
&lt;p&gt;In the near future, I’ll write about the Script Command I mentioned for getting blog post images in place. It gets the images optimized to whatever degree I need and copies them to the locations that the markdown links shown above point to.&lt;/p&gt;
&lt;p&gt;Thoughts? Questions? Hit me on the &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;pachyderm&lt;/a&gt;.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Take that, Vic Hudson! &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;“Astrosize” doesn’t refer to image size, but rather transforming the links to match what Astro expects. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;Anything in public is relative to site root, so instead of /public/images, the working link starts with /images. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>It&apos;s Yet Another Raycast Script Command, this time one for tranforming blog post image links to match image file locations in Astro.</summary></item><item><title>Remarking the Socials</title><link>https://scottwillsey.com/remark-socials</link><guid isPermaLink="true">https://scottwillsey.com/remark-socials</guid><description>How I learned to paste links into my blog and have them magically converted into amazing embeds.</description><pubDate>Thu, 04 Jul 2024 13:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#astro-remark-support&quot;&gt;Astro Remark Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#social-links-in-blog-posts&quot;&gt;Social Links in Blog Posts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#transforming-social-media-links-in-astro-markdown-files&quot;&gt;Transforming Social Media Links in Astro Markdown files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#regular-expressions-for-youtube-threads-and-mastodon-links&quot;&gt;Regular Expressions for YouTube, Threads, and Mastodon Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#how-remark-plugins-work-in-astro&quot;&gt;How Remark Plugins Work in Astro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#creating-a-remark-plugin-in-astro&quot;&gt;Creating a Remark Plugin in Astro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#remarking-markdown-page-content&quot;&gt;Remarking Markdown Page Content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#remarking-the-social-media-links&quot;&gt;Remarking the Social Media Links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#summarium&quot;&gt;Summarium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;astro-remark-support&quot;&gt;Astro Remark Support&lt;/h2&gt;
&lt;p&gt;One of the cool things about &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; is how it supports Markdown using &lt;a href=&quot;https://github.com/remarkjs/remark&quot;&gt;remark&lt;/a&gt;. This means it also supports remark plugins, and THAT means you can write your own custom remark plugins to modify the markdown in your posts however you like.&lt;/p&gt;
&lt;p&gt;Astro’s documentation has &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/#modifying-frontmatter-with-remark&quot;&gt;many examples of modifying front matter with remark&lt;/a&gt;. Actually modifying things in the markdown content itself is a slightly different matter, but it’s still pretty simple, all things considered. Astro has a recipes and guides section on their &lt;a href=&quot;https://docs.astro.build/en/community-resources/content/&quot;&gt;Community Educational Content page&lt;/a&gt; (basically links to external articles), and in that recipes and guides section is a section on Markdown, with a link to this example:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://eatmon.co/blog/remove-runts-markdown&quot;&gt;Remove runts from your Markdown with ~15 lines of code · John Eatmon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don’t care about runts because I’m neither a pig farmer nor a person who notices them on my own blog. But I’m glad John cares, because he basically outlined a strategy for looking for and transforming specific things in my blog posts.&lt;/p&gt;
&lt;h2 id=&quot;social-links-in-blog-posts&quot;&gt;Social Links in Blog Posts&lt;/h2&gt;
&lt;p&gt;If you read a lot of blogs, you’ll notice that most times you see social media or YouTube videos linked to, they’re basically a fancy little mini-view of the content called an embed – the content is actually embedded into the post rather than just being a link.&lt;/p&gt;
&lt;p&gt;Naturally I want that look for any social media or YouTube links I post here, but one constant with me is that I never like to know implementation details to write a post. That includes things like embedding links from YouTube, Mastodon, Threads, or whatever. I want to be able to just paste the link in and have my site handle it for me. There is an astro integration called &lt;a href=&quot;https://astro-embed.netlify.app/&quot;&gt;Astro Embed&lt;/a&gt; that will worry about this for you, but it doesn’t support Mastodon or Threads links. So I created my own remark plugin that does, primarily because I found it easier than modifying the Astro Embed extension.&lt;/p&gt;
&lt;p&gt;Mastodon links are weird compared to other social network links in that they don’t have a known common domain for every link. There are all sorts of Mastodon URLs out there. My profile link, for example, is &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;https://social.lol/@scottwillsey&lt;/a&gt;. Take that, X. YouTube links are easy, and Threads links are easy. It’s trivial to use regular expressions to find these links, assuming they exist on a line all by themselves, unadorned and glaringly obvious, like a hanging chad desperately waiting to be peered at and analyzed within an inch of its life.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;transforming-social-media-links-in-astro-markdown-files&quot;&gt;Transforming Social Media Links in Astro Markdown files&lt;/h2&gt;
&lt;p&gt;Step 1 in transforming the social links is creating aforementioned regular expressions and testing them.&lt;/p&gt;
&lt;h3 id=&quot;regular-expressions-for-youtube-threads-and-mastodon-links&quot;&gt;Regular Expressions for YouTube, Threads, and Mastodon Links&lt;/h3&gt;
&lt;p&gt;If you have a Mac and you do any scripting or text file management or log analysis, I highly suggest &lt;a href=&quot;https://www.barebones.com/products/bbedit/index.html&quot;&gt;BBEdit&lt;/a&gt; from Bare Bones Software. It’s not cheap, it’s complex, and a lot of things are done in counterintuitive ways. But it’s powerful, and it has an outstanding Pattern Playground feature for building and testing regular expressions. It’s simple to make a bunch of sample posts and try matches and replacements on them to craft both your regular expressions and the replacement strings for the embed code.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEditPatternPlayground-AF19ED87-71D0-42DD-91E2-64601B7C2558.jpg&quot;&gt;&lt;img alt=&quot;BBEdit Pattern Playground&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1236&quot; src=&quot;https://scottwillsey.com/_astro/BBEditPatternPlayground-AF19ED87-71D0-42DD-91E2-64601B7C2558.HGJBlQWx_ZMKhma.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the regular expressions I’m currently using for Mastodon, Threads, and YouTube, respectively.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;Mastodon regex&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;mastodonRegex&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;a-zA-Z0-9.-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;\w-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\d&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{10,20}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000;--2:#F5776E&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;const mastodonRegex =        /^https:\/\/([a-zA-Z0-9.-]+)\/(@[\w-]+\/\d{10,20})$/;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;Threads regex&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;threadsRegex&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;threads&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;net&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;\w.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;A-Za-z0-9_&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\?&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;const threadsRegex =        /^https:\/\/www\.threads\.net\/(@[\w.]+)\/post\/([A-Za-z0-9_\-]+)(\?.*)?$/;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;YouTube regex&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;youtubeRegex&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(?:&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;www&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;youtube&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;com&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;watch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\?&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;v=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#D40000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;youtu&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;be&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)(&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;\w-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)(?:&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\S&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;const youtubeRegex =        /^https:\/\/(?:www\.youtube\.com\/watch\?v=|youtu\.be\/)([\w-]+)(?:\S*)?$/;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;These may change as I encounter variations of the different URLs for each service. These are rev 2 of the Threads and YouTube regular expressions, for example.&lt;/p&gt;
&lt;h3 id=&quot;how-remark-plugins-work-in-astro&quot;&gt;How Remark Plugins Work in Astro&lt;/h3&gt;
&lt;p&gt;When you create a remark plugin in Astro, it’s important to understand that the code is going to get applied to all your markdown files. So for whatever you see in your remark function, that will attempt to apply to every single post and any other pages you have where the actual content is inside a markdown file. That concept is important, because it makes it clearer what’s happening when you look at an actual remark plugin.&lt;/p&gt;
&lt;h3 id=&quot;creating-a-remark-plugin-in-astro&quot;&gt;Creating a Remark Plugin in Astro&lt;/h3&gt;
&lt;p&gt;Creating a remark plugin in Astro is pretty simple. Somewhere in a folder you like under &lt;code&gt;src&lt;/code&gt;, create a .mjs file with a name you like, such as &lt;code&gt;remark-plugins.mjs&lt;/code&gt;. Inside that file, export a function:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;remark-plugins.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;remarkModifiedTime&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;history&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;result&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;execSync&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;git log -1 --pretty=&quot;format:%cI&quot; &quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;lastModified&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;result&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;toString&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;export function remarkModifiedTime() {  return function (tree, file) {    const filepath = file.history[0];    const result = execSync(&amp;#x60;git log -1 --pretty=&amp;#x22;format:%cI&amp;#x22; &amp;#x22;${filepath}&amp;#x22;&amp;#x60;);    file.data.astro.frontmatter.lastModified = result.toString();  };}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Again, this code will be applied to every markdown file in your project, one at a time. This takes the file in question, gets the file name and stores it in the &lt;code&gt;filepath&lt;/code&gt; constant, and then uses that to look at the last git commit for that file. Whatever the date of the last git commit for it was, it changes the file’s &lt;code&gt;lastModified&lt;/code&gt; front matter value to that date. Now when your site is compiled, the last git commit date for that page will be the value used for &lt;code&gt;lastModified&lt;/code&gt;, and if you reference that &lt;code&gt;lastModified&lt;/code&gt; value anywhere in your site, that date will show up there.&lt;/p&gt;
&lt;p&gt;In order to register this remark plugin with Astro and make it apply to your markdown pages, you need to reference it in your &lt;code&gt;astro.config.mjs&lt;/code&gt; file like this (note the highlighted lines):&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;astro.config.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;JavaScript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import { defineConfig } from &quot;astro/config&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import expressiveCode from &quot;astro-expressive-code&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import pagefind from &quot;astro-pagefind&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import { rehypeAccessibleEmojis } from &quot;rehype-accessible-emojis&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import remarkToc from &quot;remark-toc&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import { remarkModifiedTime } from &quot;./src/components/utilities/remark-modified-time.mjs&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;import { remarkSocialLinks } from &quot;./src/components/utilities/remark-social-links.mjs&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;/** @type {import(&apos;astro-expressive-code&apos;).AstroExpressiveCodeOptions} */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;const astroExpressiveCodeOptions = {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;// Example: Change the themes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;themes: [&quot;material-theme-ocean&quot;, &quot;light-plus&quot;, &quot;github-dark-dimmed&quot;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;themeCssSelector: (theme) =&gt; `[data-theme=&apos;${theme.name}&apos;]`,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;// https://astro.build/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;export default defineConfig({&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;site: &quot;https://scottwillsey.com/&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;integrations: [expressiveCode(astroExpressiveCodeOptions), pagefind()],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;markdown: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;remarkPlugins: [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;[remarkToc, { heading: &quot;contents&quot; }],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;remarkSocialLinks,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;remarkModifiedTime,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;rehypePlugins: [rehypeAccessibleEmojis],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; &amp;#x60;[data-theme=&amp;#x27;${theme.name}&amp;#x27;]&amp;#x60;,};// https://astro.build/configexport default defineConfig({  site: &amp;#x22;https://scottwillsey.com/&amp;#x22;,  integrations: [expressiveCode(astroExpressiveCodeOptions), pagefind()],  markdown: {    remarkPlugins: [      [remarkToc, { heading: &amp;#x22;contents&amp;#x22; }],      remarkSocialLinks,      remarkModifiedTime,    ],    rehypePlugins: [rehypeAccessibleEmojis],  },});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h3 id=&quot;remarking-markdown-page-content&quot;&gt;Remarking Markdown Page Content&lt;/h3&gt;
&lt;p&gt;Changing the markdown in the body of the markdown file is a little different. It’s possible that it can be done directly, but to the best of my knowledge, it requires walking the DOM tree of the document and looking at each node. This will allow us to look at the solo lines of text containing our social media URLs individually. To do this, we use a package called &lt;a href=&quot;https://www.npmjs.com/package/unist-util-visit&quot;&gt;unist-util-visit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here’s the bones of the plugin we’ll create:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;remark-social-links.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;visit&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;unist-util-visit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;remarkSocialLinks&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;visit&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// do things on each node, or line of text in the markdown file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {    visit(tree, &amp;#x22;text&amp;#x22;, (node) =&gt; {     // do things on each node, or line of text in the markdown file    });  };}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h3 id=&quot;remarking-the-social-media-links&quot;&gt;Remarking the Social Media Links&lt;/h3&gt;
&lt;p&gt;For each line, we’ll check it against our regular expressions and perform the appropriate action (replace the bare URL with whatever embed code is appropriate for the link).&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;remark-social-links.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;visit&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;unist-util-visit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;remarkSocialLinks&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;visit&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;youtubeRegex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;videoId&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;youtube&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;videoId&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mastodonRegex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;mastodon&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;threadsRegex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;threads&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {    visit(tree, &amp;#x22;text&amp;#x22;, (node) =&gt; {       let matches;      if ((matches = node.value.match(youtubeRegex))) {        const videoId = matches[1];        node.type = &amp;#x22;html&amp;#x22;;        node.value = replacementTemplates.youtube(videoId);      } else if ((matches = node.value.match(mastodonRegex))) {        const domain = matches[1],          id = matches[2];        node.type = &amp;#x22;html&amp;#x22;;        node.value = replacementTemplates.mastodon(domain, id);      } else if ((matches = node.value.match(threadsRegex))) {        const user = matches[1],          id = matches[2];        node.type = &amp;#x22;html&amp;#x22;;        node.value = replacementTemplates.threads(user, id);      }    });  };}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s great… but you may have noticed that there are no actual definitions for &lt;code&gt;youtubeRegex&lt;/code&gt;, &lt;code&gt;mastodonRegex&lt;/code&gt;, &lt;code&gt;threadsRegex&lt;/code&gt;, or any of their replacement templates in the above function.&lt;/p&gt;
&lt;p&gt;Well, earlier I showed you my regular expressions. I didn’t show you the replacement strings, but here’s the whole thing, including regular expressions (highlighted) and replacement strings (also highlighted):&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;remark-social-links.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;visit&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;unist-util-visit&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;remarkSocialLinks&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;visit&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;youtubeRegex&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000;--2:#f89a93&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;(?:&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;youtube&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;com&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;watch&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\?&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;v=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#ac0000;--2:#f89a93&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;youtu&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;be&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)(&lt;/span&gt;&lt;span style=&quot;--2:#71b8ff&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;\w-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)(?:&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#71b8ff&quot;&gt;\S&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#f89a93&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;mastodonRegex&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000;--2:#f89a93&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#71b8ff&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;a-zA-Z0-9.-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--2:#71b8ff&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;\w-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#71b8ff&quot;&gt;\d&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;{10,20}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000;--2:#f89a93&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;threadsRegex&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000;--2:#f89a93&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;threads&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;net&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--2:#71b8ff&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;\w.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#71b8ff&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;A-Za-z0-9_&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#71b8ff&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#ac0000;--2:#8DDB8C;--2fw:bold&quot;&gt;\?&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#71b8ff&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#804040;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#f89a93&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#ac0000&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;youtube&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;iframe width=&quot;560&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&amp;#x3C;/iframe&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;mastodon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;iframe src=&quot;https://&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/embed&quot; class=&quot;mastodon-embed&quot; style=&quot;max-width: 100%; border: 0&quot; width=&quot;400&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;&amp;#x3C;/iframe&gt;&amp;#x3C;script src=&quot;https://&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/embed.js&quot; async=&quot;async&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;threads&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;div class=&quot;threads-post&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;blockquote class=&quot;text-post-media&quot; data-text-post-permalink=&quot;https://www.threads.net/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/post/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&quot; data-text-post-version=&quot;0&quot; id=&quot;ig-tp-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&quot; style=&quot; background:#FFF; border-width: 1px; border-style: solid; border-color: #00000026; border-radius: 16px; max-width:800px; margin: 1px; min-width:270px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt; &amp;#x3C;a href=&quot;https://www.threads.net/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/post/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%; font-family: -apple-system, BlinkMacSystemFont, sans-serif;&quot; target=&quot;_blank&quot;&gt; &amp;#x3C;div style=&quot; padding: 40px; display: flex; flex-direction: column; align-items: center;&quot;&gt;&amp;#x3C;div style=&quot; display:block; height:32px; width:32px; padding-bottom:20px;&quot;&gt; &amp;#x3C;!--missing svg here--&gt; &amp;#x3C;/div&gt; &amp;#x3C;div style=&quot; font-size: 15px; line-height: 21px; color: #999999; font-weight: 400; padding-bottom: 4px; &quot;&gt; Post by &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;/div&gt; &amp;#x3C;div style=&quot; font-size: 15px; line-height: 21px; color: #000000; font-weight: 600; &quot;&gt; View on Threads&amp;#x3C;/div&gt;&amp;#x3C;/div&gt;&amp;#x3C;/a&gt;&amp;#x3C;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;script async src=&quot;https://www.threads.net/embed.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;/div&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;youtubeRegex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;videoId&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;youtube&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;videoId&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mastodonRegex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;mastodon&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;threadsRegex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;replacementTemplates&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;threads&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {    visit(tree, &amp;#x22;text&amp;#x22;, (node) =&gt; {      const youtubeRegex =        /^https:\/\/(?:www\.youtube\.com\/watch\?v=|youtu\.be\/)([\w-]+)(?:\S*)?$/;      const mastodonRegex =        /^https:\/\/([a-zA-Z0-9.-]+)\/(@[\w-]+\/\d{10,20})$/;      const threadsRegex =        /^https:\/\/www\.threads\.net\/(@[\w.]+)\/post\/([A-Za-z0-9_\-]+)(\?.*)?$/;      const replacementTemplates = {        youtube: (id) =&gt;          &amp;#x60;&lt;iframe width=&quot;&quot;&gt;&lt;/iframe&gt;&amp;#x60;,        mastodon: (domain, id) =&gt;          &amp;#x60;&lt;iframe src=&quot;&quot;&gt;&lt;/iframe&gt;&amp;#x60;,        threads: (user, id) =&gt;          &amp;#x60;&lt;div class=&quot;&quot;&gt;&lt;blockquote class=&quot;&quot;&gt; &lt;a href=&quot;&quot;&gt; &lt;div style=&quot;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;!--missing svg here--&gt; &lt;/div&gt; &lt;div style=&quot;&quot;&gt; Post by ${user}&lt;/div&gt; &lt;div style=&quot;&quot;&gt; View on Threads&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;/div&gt;&amp;#x60;,      };      let matches;      if ((matches = node.value.match(youtubeRegex))) {        const videoId = matches[1];        node.type = &amp;#x22;html&amp;#x22;;        node.value = replacementTemplates.youtube(videoId);      } else if ((matches = node.value.match(mastodonRegex))) {        const domain = matches[1],          id = matches[2];        node.type = &amp;#x22;html&amp;#x22;;        node.value = replacementTemplates.mastodon(domain, id);      } else if ((matches = node.value.match(threadsRegex))) {        const user = matches[1],          id = matches[2];        node.type = &amp;#x22;html&amp;#x22;;        node.value = replacementTemplates.threads(user, id);      }    });  };}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can see that &lt;code&gt;replacementTemplates&lt;/code&gt; is a javascript object that contains three functions. Each of those functions returns the text create by the string literals inside of them. These string literals are the embed template with appropriate insertion of the specific unique information in the URL, such as username, post or video ID, or domain name (in the case of Mastodon).&lt;/p&gt;
&lt;p&gt;That’s my entire remark plugin. I register it in &lt;code&gt;astro.config.mjs&lt;/code&gt; and it gets executed upon all my blog posts automatically.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;astro.config.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;defineConfig&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro/config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;expressiveCode&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-expressive-code&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-pagefind&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rehypeAccessibleEmojis&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;rehype-accessible-emojis&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;remarkToc&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;remark-toc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;remarkSocialLinks&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./src/components/utilities/remark-social-links.mjs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;/** &lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--0fs:italic&quot;&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#227188;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--0fs:italic&quot;&gt;import(&apos;astro-expressive-code&apos;).AstroExpressiveCodeOptions&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt; */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;astroExpressiveCodeOptions&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Example: Change the themes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;themes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;material-theme-ocean&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light-plus&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;github-dark-dimmed&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;themeCssSelector&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;[data-theme=&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// https://astro.build/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;defineConfig&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://scottwillsey.com/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F69D50&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;integrations&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;expressiveCode&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;astroExpressiveCodeOptions&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;()]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F69D50&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;markdown&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;remarkPlugins&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;remarkToc&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;heading&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;contents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;remarkSocialLinks&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;rehypePlugins&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;rehypeAccessibleEmojis&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f69f53&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; &amp;#x60;[data-theme=&amp;#x27;${theme.name}&amp;#x27;]&amp;#x60;,};// https://astro.build/configexport default defineConfig({  site: &amp;#x22;https://scottwillsey.com/&amp;#x22;,  integrations: [expressiveCode(astroExpressiveCodeOptions), pagefind()],  markdown: {    remarkPlugins: [[remarkToc, { heading: &amp;#x22;contents&amp;#x22; }], remarkSocialLinks],    rehypePlugins: [rehypeAccessibleEmojis],  },});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;summarium&quot;&gt;Summarium&lt;/h2&gt;
&lt;p&gt;That’s how easy it is to programmatically modify content in a markdown file in Astro.&lt;/p&gt;
&lt;p&gt;It’s probable that I can walk the tree without using unist-util-visit, based on the Astro documentation remark plugin example called &lt;a href=&quot;https://docs.astro.build/en/recipes/reading-time/&quot;&gt;Add reading time&lt;/a&gt;, so I’ll probably make that modification. Maybe I can condense my check/replacement code a little more too.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Remember when &lt;a href=&quot;https://www.history.com/news/2000-election-bush-gore-votes-supreme-court&quot;&gt;hanging chads&lt;/a&gt; were the biggest of our political problems? It can definitely be argued, however, that there’s a direct line from those hanging chads to where we are today with people storming the capitol to protest a “stolen election”. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>How I learned to paste links into my blog and have them magically converted into amazing embeds.</summary></item><item><title>I do it for myself</title><link>https://scottwillsey.com/for-myself</link><guid isPermaLink="true">https://scottwillsey.com/for-myself</guid><description>Why do I blog? Definitely not for the numbers.</description><pubDate>Fri, 28 Jun 2024 20:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning as I was going through my blogroll waiting for my double-height cup of coffee to kick in, I came across Cole’s post about the obvious rewards, or lack thereof, of blogging (or any content creation, really), and it resonated with me. Why DO people like me have websites that we update and maintain and post links to when it genuinely seems like maybe one or two people at most ever notice?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The good thing is that we can do our art because we love it. It really doesn’t matter how great (or small) the response is. As Robert notes, “I’m doing this because &lt;em&gt;I love it&lt;/em&gt;. If others like it too, great, but that’s not the main purpose.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That’s it exactly. It’s not about public notoriety or the dopamine hit of notifications and increasing follower counts. I don’t care at all about those things. I care about doing things I find interesting, and if someone ever finds one of my posts useful, that will be wonderful! That’s what I want! But it’s not what I need in order to keep doing it.&lt;/p&gt;
&lt;p&gt;If you’re going to make a business or a large part of your income from your online work, you need eyeballs, and you need “engagement” (I really don’t like that word). But when I see some of my friends obsessing about their follower counts and using the word engagement non-ironically, I just think that I never want to have to live that way. &lt;span role=&quot;img&quot; aria-label=&quot;smiling face with open mouth &amp;#x26; smiling eyes&quot;&gt;😄&lt;/span&gt; I’m one of those dumb enthusiasts who doesn’t track anything, has almost no followers, and loves the fact that it’s never going to be about numbers.&lt;/p&gt;
&lt;p&gt;But what about you? What are you doing with your website to make it uniquely yours? I like to &lt;a href=&quot;https://scottwillsey.com/links/&quot;&gt;link&lt;/a&gt; to people’s stuff on my links page, whether it be in my &lt;a href=&quot;https://scottwillsey.com/links/#blogroll&quot;&gt;Blogroll&lt;/a&gt; section or my &lt;a href=&quot;https://scottwillsey.com/links/#CoolSiteSpotlight&quot;&gt;Cool Site Spotlight&lt;/a&gt;.  The best of the web is people doing things because they love it, and linking to each other. Let me know on &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;Mastodon&lt;/a&gt; what I’m missing!&lt;/p&gt;
&lt;p&gt;Linked post: &lt;a href=&quot;https://coleb.blog/posts/i-do-it-for-myself&quot;&gt;I do it for myself&lt;/a&gt;&lt;/p&gt;</content:encoded><summary>Why do I blog? Definitely not for the numbers.</summary></item><item><title>Redo, Redoes, Redid</title><link>https://scottwillsey.com/redo-redoes-redid</link><guid isPermaLink="true">https://scottwillsey.com/redo-redoes-redid</guid><description>Today I am launching a refreshed, cleaner, sleeker site design!</description><pubDate>Sat, 22 Jun 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You may have noticed that today marks a redesign that I hope brings a cleaner, sleeker, easier to read format to the site. I’m kind of excited about it – I hope it’s at least tolerable for you, the reader! Even better, I hope you actually like it.&lt;/p&gt;
&lt;p&gt;This site has had a lot of redesigns over the years. The worst were during the Wordpress years. The site started getting good&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; during the Hugo and Eleventy years, and my satisfaction with it has only increased in the current Astro incarnation.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;I certainly like this version better than yesterday’s site, which had a too-large site title and darker backgrounds for post content. I used this design to give posts delineation in the index page list view, but it really just made things feel cramped and busy.&lt;/p&gt;
&lt;p&gt;For reference, here’s what it looked like on June 21, 2024.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/HomePage20240619-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.jpg&quot;&gt;&lt;img alt=&quot;HomePage20240619&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1860&quot; src=&quot;https://scottwillsey.com/_astro/HomePage20240619-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.YlrrkhZ-_1DF9b6.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here’s the redesign I launched today, June 22, 2024.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/HomePageUpdate20240620-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.jpg&quot;&gt;&lt;img alt=&quot;HomePageUpdate20240620&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1982&quot; src=&quot;https://scottwillsey.com/_astro/HomePageUpdate20240620-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.wdmF7HFw_gbdNq.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the same in light theme:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/HomePageUpdateLightTheme20240620-92D0D23D-7B21-45C0-AF71-A177FD3A14C5.jpg&quot;&gt;&lt;img alt=&quot;HomePageUpdateLightTheme20240620&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1906&quot; src=&quot;https://scottwillsey.com/_astro/HomePageUpdateLightTheme20240620-4C825BBF-63B1-4C16-B901-3126BFF0CC0D.DvcIMK3__Z1TsFdW.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An obvious difference is I’ve reverted back to a horizontal header navigation menu instead of the sticky vertical side menu. Also I’ve reverted to having icons only, without text, in the navigation menu. And finally, they’re colored icons! I had colors in my menu icons back in 2021, and I kind of missed it.&lt;/p&gt;
&lt;p&gt;Here’s what part of a blog post page looked like yesterday, followed by an image of what that same blog post page looks like today.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScottWillseyPost20240619-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.jpg&quot;&gt;&lt;img alt=&quot;ScottWillseyPost20240619&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1170&quot; src=&quot;https://scottwillsey.com/_astro/ScottWillseyPost20240619-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.u7WhO5yB_5AGaX.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScotWillseyPost20240620-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.jpg&quot;&gt;&lt;img alt=&quot;ScotWillseyPost20240620&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1216&quot; src=&quot;https://scottwillsey.com/_astro/ScotWillseyPost20240620-8E6FF71C-9526-4B63-9E6F-DA43E399BE6B.Dtr1fcpw_ZWvDBY.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As much as side menus are nice, I do like the centered, slightly wider blog post view that the header menu approach affords.&lt;/p&gt;
&lt;p&gt;And just for fun, here’s a shot from 2020, showing what things looked like then. Not long after this, I added color to the menu icons, but I haven’t found a screenshot of that yet. I’m pretty sure I have one somewhere.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScottWillsey2020919-92D0D23D-7B21-45C0-AF71-A177FD3A14C5.jpg&quot;&gt;&lt;img alt=&quot;ScottWillsey2020919&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;2902&quot; src=&quot;https://scottwillsey.com/_astro/ScottWillsey2020919-92D0D23D-7B21-45C0-AF71-A177FD3A14C5.B4t1Zmrx_1KfOst.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I still have some tweaks and fixes to make, but nothing too breaking. I hope you enjoy the new look!&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;“Good” is a relative term because I am, after all, the one designing my web site. I have some design skill limitations to be sure. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;Slight aside: Astro is by far the “best” (by my definition of the word) site framework I’ve used to date. It allows for static (pre-rendered) or SSR (on-demand rendered) modes, eschews templating languages like Mustache and Handlebars, and is incredibly flexible. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Today I am launching a refreshed, cleaner, sleeker site design!</summary></item><item><title>Astro Sitemap Page Modified Timestamps</title><link>https://scottwillsey.com/astro-sitemap-timestamps</link><guid isPermaLink="true">https://scottwillsey.com/astro-sitemap-timestamps</guid><description>I was asked a question on Threads about how to apply my Last Modified Dates using Git pre-commit to Astro&apos;s Sitemap integration.</description><pubDate>Tue, 18 Jun 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Threads generally makes me sad by being social media, so I don’t look at it often. Imagine my surprise today when I was wading through some hostile replies to my thoughts about an F1 related topic and I stumbled across a comment to me about my post on &lt;a href=&quot;http://localhost:4321/git-pre-commit/&quot;&gt;Using Git Hooks for Displaying Last Modified Dates&lt;/a&gt; and how to apply it to &lt;a href=&quot;https://docs.astro.build/en/guides/integrations-guide/sitemap/&quot;&gt;Astro Sitemap&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;threads-post&quot;&gt;
&lt;blockquote class=&quot;text-post-media&quot; data-text-post-permalink=&quot;https://www.threads.net/@zaitovalisher/post/C4aFklLsElU&quot; data-text-post-version=&quot;0&quot; id=&quot;ig-tp-C4aFklLsElU&quot; style=&quot; background:#FFF; border-width: 1px; border-style: solid; border-color: #00000026; border-radius: 16px; max-width:800px; margin: 1px; min-width:270px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt; &lt;a href=&quot;https://www.threads.net/@zaitovalisher/post/C4aFklLsElU&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%; font-family: -apple-system, BlinkMacSystemFont, sans-serif;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; padding: 40px; display: flex; flex-direction: column; align-items: center;&quot;&gt;&lt;div style=&quot; display:block; height:32px; width:32px; padding-bottom:20px;&quot;&gt; &lt;svg aria-label=&quot;Threads&quot; height=&quot;32px&quot; role=&quot;img&quot; viewBox=&quot;0 0 192 192&quot; width=&quot;32px&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;path d=&quot;M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt; &lt;div style=&quot; font-size: 15px; line-height: 21px; color: #999999; font-weight: 400; padding-bottom: 4px; &quot;&gt; Post by @zaitovalisher&lt;/div&gt; &lt;div style=&quot; font-size: 15px; line-height: 21px; color: #000000; font-weight: 600; &quot;&gt; View on Threads&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;p&gt;Interesting question. I guess the approach would be to first use &lt;code&gt;pre-commit&lt;/code&gt; to modify the timestamps on any pages updated in the commit and then modify the sitemap file by looking for any pages with date modified timestamps and updating their entries in the sitemap.&lt;/p&gt;
&lt;p&gt;There is a &lt;a href=&quot;https://docs.astro.build/en/guides/integrations-guide/sitemap/#serialize&quot;&gt;serialize function&lt;/a&gt; in Astro Sitemap and it looks like it happens on build when writing out the sitemap. If this is true, so long as you do your git commit before you do your build, it should update the pages with the correct last modified dates.&lt;/p&gt;
&lt;p&gt;Now I’m going to have to play with Astro Sitemap and find out!&lt;/p&gt;</content:encoded><summary>I was asked a question on Threads about how to apply my Last Modified Dates using Git pre-commit to Astro&apos;s Sitemap integration.</summary></item><item><title>Scrolling Screenshots in CleanShot X</title><link>https://scottwillsey.com/cleanshotx-scrolling-screenshots</link><guid isPermaLink="true">https://scottwillsey.com/cleanshotx-scrolling-screenshots</guid><description>Need a screenshot of a long web page? CleanShot X has a function for that.</description><pubDate>Fri, 14 Jun 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I wrote about &lt;a href=&quot;https://scottwillsey.com/cleanshotx-text-recog/&quot;&gt;OCR in CleanShot X&lt;/a&gt; in my last post, and my friend David Nelson reminded me of another stellar feature of CleanShot X – scrolling screenshots.&lt;/p&gt;
&lt;iframe src=&quot;https://mastodon.social/@dmnelson/112601523300995070/embed&quot; class=&quot;mastodon-embed&quot; style=&quot;max-width: 100%; border: 0&quot; width=&quot;400&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;It’s true, this is a great feature. It’s a little counterintuitive to get it to work initially, but once you get it, you’ll use this all the time. I have a keyboard shortcut set up to initiate a scrolling screenshot, but you can do it from the CleanShot X menubar icon (or even from Raycast – more on that later). All I have to do is hit ⇧⌥⌘4 to start the scrolling capture using CleanShot X. Then it’s a little odd - it wants you to drag an ouline around the area to be scrolled. Usually this means my full browser window. Then click Start Capture, click Auto-Scroll, click Done when it finishes, and then you have a long screenshot.&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;500&quot; src=&quot;https://www.youtube.com/embed/tjKms_r-l0Y&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;Here’s the result.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ProPublicaScreenShot-DC3CACBA-3091-4342-814C-FE15AAA272D8.jpg&quot;&gt;&lt;img alt=&quot;Pro Publica Screenshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;4298&quot; src=&quot;https://scottwillsey.com/_astro/ProPublicaScreenShot-DC3CACBA-3091-4342-814C-FE15AAA272D8.Dzzg3dYa_ZbaMgL.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I originally put a screenshot of my own site’s home page here, but It looks a little funny because I have a site menu that doesn’t disappear up the page as it scrolls, so the menu looks long and repetitive in a way that it isn’t. Page scrollbars have similar issues, but overall, it’s a great feature that’s useful if you have a need to document a long document of any kind.&lt;/p&gt;</content:encoded><summary>Need a screenshot of a long web page? CleanShot X has a function for that.</summary></item><item><title>OCR in CleanShot X</title><link>https://scottwillsey.com/cleanshotx-text-recog</link><guid isPermaLink="true">https://scottwillsey.com/cleanshotx-text-recog</guid><description>CleanShot X has Text Recognition using OCR technology, a handy tool I use all the time.</description><pubDate>Tue, 11 Jun 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I love this modern era of computing, and do you know why? Text Recognition, also known as OCR in many apps, is amazing in so many apps and OSes now, and it is very useful.&lt;/p&gt;
&lt;p&gt;I’ve written about &lt;a href=&quot;https://scottwillsey.com/image-text-recog/&quot;&gt;Image Search Text Recognition in Raycast and ScreenFloat&lt;/a&gt; before. Another Mac app that has Text Recognition using OCR technology (according to its own website) is &lt;a href=&quot;https://cleanshot.com&quot;&gt;CleanShot X&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/CleanShotXTextRecognition-024199B0-E0AF-4169-82F2-2140DB429C17.jpg&quot;&gt;&lt;img alt=&quot;CleanShot X Text Recognition&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;700&quot; src=&quot;https://scottwillsey.com/_astro/CleanShotXTextRecognition-024199B0-E0AF-4169-82F2-2140DB429C17.DKdX1bb8_Z2nWoiO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CleanShot X does Text Recognition a little differently than other apps. With CleanShot X, you can use a keyboard shortcut to bring up a capture tool, exactly like a screenshot capture tool, and you drag over the area you want text recognition in. In my case, I have ⌥⇧⌘O set as my keyboard shortcut.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/CleanShotXOCRKBShortcuts-024199B0-E0AF-4169-82F2-2140DB429C17.jpg&quot;&gt;&lt;img alt=&quot;CleanShot X OCR Keyboard Shortcuts&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;808&quot; src=&quot;https://scottwillsey.com/_astro/CleanShotXOCRKBShortcuts-024199B0-E0AF-4169-82F2-2140DB429C17.vC707Ubt_1lu9Uy.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let’s say I have a screenshot of the title of The Verge’s recent iPad Pro article, for some inexplicable reason.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/VergeScreenShot-DBF7C47C-6B76-49EF-83AE-A3A9EFE0CE76.jpg&quot;&gt;&lt;img alt=&quot;The Verge Screen Shot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1158&quot; src=&quot;https://scottwillsey.com/_astro/VergeScreenShot-DBF7C47C-6B76-49EF-83AE-A3A9EFE0CE76.IEkiLmM__2m8HYi.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I can hit ⌥⇧⌘O, drag over the part of the image with the text I want to capture, and release. CleanShot X automatically detects all text in that region and copies it to the clipboard. Then I can (also inexplicably) open TextEdit and paste it in.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/CleanShotXVergeOCRResults-024199B0-E0AF-4169-82F2-2140DB429C17.jpg&quot;&gt;&lt;img alt=&quot;CleanShot X The Verge OCR Results&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1250&quot; src=&quot;https://scottwillsey.com/_astro/CleanShotXVergeOCRResults-024199B0-E0AF-4169-82F2-2140DB429C17.CCC3MUI5_146Ogz.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I like the simplicity of it and the fact that I get to define the region to look for text in, and the fact that it just copies all text in that region to the clipboard without me having to pick and choose words or lines or paragraphs or whatever.&lt;/p&gt;
&lt;p&gt;Here’s a little tip for you Windows users: Snipping Tool has Text Recognition built in too. You can fire it up and capture onscreen notes that people are typing in Teams meetings and use the Text Recognition tool to grab the text for yourself in case the presenter forgets to send out a particular set of notes they’re typing up as they’re talking. It’s great. I do it all the time.&lt;/p&gt;
&lt;p&gt;There are lots of Text Recognition examples in macOS and iOS and apps that run on those platforms, and I celebrate them all. We live in a golden age of utility software.&lt;/p&gt;</content:encoded><summary>CleanShot X has Text Recognition using OCR technology, a handy tool I use all the time.</summary></item><item><title>ChatGPT for macOS Will Not Sherlock Raycast AI for Me</title><link>https://scottwillsey.com/raycast-ai-not-sherlocked</link><guid isPermaLink="true">https://scottwillsey.com/raycast-ai-not-sherlocked</guid><description>The answer to my own question about ChatGPT for macOS supplanting Raycast Advanced AI is a simple one.</description><pubDate>Wed, 05 Jun 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve finally had a chance to play with the ChatGPT macOS app&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and I’m here to say it doesn’t swing the uppercut required to get me to stop paying for Raycast Advanced AI. Right now the one thing it has that Raycast AI does not is the ability to upload files for parsing, but that’s coming soon to Raycast AI. Raycast also keeps playing with ideas like support for local LLMs to augment their Advanced AI plan support for models like OpenAI GPT-4o, Anthropic Claude 3 Sonnet and Opus, and Perplexity Llama 3 Sonar Large.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastLocalLLMdemo-A7610198-352C-40CD-BF2A-9B2C363D6736.jpg&quot;&gt;&lt;img alt=&quot;Raycast local LLM prototype demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;664&quot; src=&quot;https://scottwillsey.com/_astro/RaycastLocalLLMdemo-A7610198-352C-40CD-BF2A-9B2C363D6736.DQ87lSEF_Z1n3rsa.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Add to that things like &lt;a href=&quot;https://scottwillsey.com/raycast-ai-commands/&quot;&gt;Raycast AI Commands&lt;/a&gt;, which &lt;a href=&quot;https://scottwillsey.com/raycast-ai-commands/&quot;&gt;I posted about previously&lt;/a&gt;, and Raycast AI is still a very attractive option for integrating AI into workflows where it makes sense to do so. I feel like I have to add that caveat given that a lot of people want to dismiss the whole thing out of hand as some kind of scam. It’s not – but that doesn’t mean LLMs are applied optimally in a lot of cases and it doesn’t mean I trust the companies involved to take time to come up with correct and optimum use cases.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Slight tangent – I think I view Raycast AI Commands as similar in purpose to things like &lt;a href=&quot;https://github.com/danielmiessler/fabric&quot;&gt;Fabric&lt;/a&gt; and &lt;a href=&quot;https://github.com/gptscript-ai/gptscript&quot;&gt;GPTScript&lt;/a&gt;, even if different in scope and flexibility, possibly. Definitely more on that as I find time to investigate all of these further.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;ChatGPT Plus subscription required &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;By the way, keep an eye on &lt;a href=&quot;https://engineered.network/pragmatic/&quot;&gt;Pragmatic&lt;/a&gt; podcast for an upcoming episode on this very topic. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>The answer to my own question about ChatGPT for macOS supplanting Raycast Advanced AI is a simple one.</summary></item><item><title>Show Me More, but Let Me Read It</title><link>https://scottwillsey.com/show-me-more</link><guid isPermaLink="true">https://scottwillsey.com/show-me-more</guid><description>I&apos;m genuinely baffled by Apple&apos;s approach to font size with respect to screen resolution.</description><pubDate>Sat, 01 Jun 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mac display settings are weird. I have a 5k Apple Studio Display. Until recently, I’ve been using the default resolution , which is 2560 x 1440. Then I started using the Studio Display for my work laptop as well, which is a Lenovo laptop, and I noticed by default it just uses the full resolution of 5120 x 2880.&lt;/p&gt;
&lt;p&gt;After seeing how great all that extra space on the PC was for remoting into servers and controlling large semiconductor test equipment UIs and being able to comfortably see everything without any scrolling, I started wondering why I was running the Mac at 2560 x 1440.&lt;/p&gt;
&lt;p&gt;System Settings has a Displays section that, among other things, shows you your resolution as 5 buttons labeled “Larger Text” on the low resolution side of things, through “Default” for 2560 x 1440, up to “More Space” for the (apparently) highest resolution.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MacScreenResButtons-D89AADE3-BB7F-4CAA-9B6B-65AAD7096FBF.jpg&quot;&gt;&lt;img alt=&quot;macOS Screen Resolution Buttons&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1892&quot; src=&quot;https://scottwillsey.com/_astro/MacScreenResButtons-D89AADE3-BB7F-4CAA-9B6B-65AAD7096FBF.BWESR5Lo_LUxOC.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The thing is, this isn’t actually the highest resolution. If you click the “Advanced” button on this screen and choose to display resolutions as a list, you see that “More Space” sets the monitor to 3200 x 1800, and that there’s another option for 5120 x 2880.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MacScreenResList-D89AADE3-BB7F-4CAA-9B6B-65AAD7096FBF.jpg&quot;&gt;&lt;img alt=&quot;macOS Screen Resolution List&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1892&quot; src=&quot;https://scottwillsey.com/_astro/MacScreenResList-D89AADE3-BB7F-4CAA-9B6B-65AAD7096FBF.C5QpIbJI_mKhI8.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here’s my gripe with macOS though – remember that “Larger Text” setting? That’s because Apple’s basic way of noticeably changing text size is changing monitor resolution. Which… is stupid. Screen resolution should be used to change how much you can see on screen at once, not to directly correlate that to text size. Yes, there will be some correlation, but Apple’s kind of making it 1:1 instead of allowing it to be a loose, more flexible relationship.&lt;/p&gt;
&lt;p&gt;Yes, you can adjust the font size in finder windows to a degree (but not enough for old eyes at 5120 x 2880) and you can adjust font size in some apps with ⌘+, but other apps either have their own way or don’t let you do it at all, and the desktop and menu bar are non-adjustable as far as I can tell.&lt;/p&gt;
&lt;p&gt;Accessibility has a few features for this, and you can VERY slightly increase menu bar font size (but not menu bar icon sizes (?) and I couldn’t find a way to change desktop font size. It’s very weird, and I’m sure an accessibility expert could point out all the things I’m missing, but the point is it’s non-discoverable and there’s no unified way to say “Guys, I’m looking at everything shrunk down because I’m on the highest resolution, just show me proportionally larger text EVERYWHERE. You’re the operating system, make it happen.”&lt;/p&gt;
&lt;p&gt;I don’t know what Microsoft is doing, but they apparently realize that letting the text disappear into the distance at 5120 x 2880 is a bad idea, because the text is not that much smaller than it was for me on my previous QHD (2560 x 1440) work monitors. I really didn’t notice much of a difference for a lot of things other than suddenly having tons of viewing space. Certain apps like RDCMan and anything happening on remote machines at those higher resolutions are exceptions, of course.&lt;/p&gt;
&lt;p&gt;Anyway, I’d love to know why this is the way it is, what I’m doing wrong (you’re the internet, isn’t it your God given mission to make sure people know they’re wrong?), and how everyone else handles it without just saying “well, I guess I’ll just view everything at 1440 x 810” or some ridiculous thing. &lt;a href=&quot;https://social.lol/@scottwillsey&quot;&gt;Let me know&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>I&apos;m genuinely baffled by Apple&apos;s approach to font size with respect to screen resolution.</summary></item><item><title>QuickTune Is Beautiful and MacStories Knows It</title><link>https://scottwillsey.com/quicktune</link><guid isPermaLink="true">https://scottwillsey.com/quicktune</guid><description>Mario Guzmán has made some beautiful apps over the years, and QuickTune tops the list.</description><pubDate>Wed, 22 May 2024 20:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://marioaguzman.github.io&quot;&gt;Mario Guzmán&lt;/a&gt; has made some beautiful apps in his time, and &lt;a href=&quot;https://marioaguzman.github.io/quicktune/&quot;&gt;QuickTune&lt;/a&gt; tops the list in my opinion. QuickTune is a beautifully Tiger-ish retro music player that uses Apple Music but gives a beautiful retro brushed metal QuickTime UI for controlling and visualizing your playlists with.&lt;/p&gt;
&lt;p&gt;I mean, look at this!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/QuickTune-DE3A3CF0-128A-49D9-A7AE-E2E11077F4CA.jpg&quot;&gt;&lt;img alt=&quot;QuickTune&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1662&quot; src=&quot;https://scottwillsey.com/_astro/QuickTune-DE3A3CF0-128A-49D9-A7AE-E2E11077F4CA.Bwg7MhvP_23DwDT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So it’s well deserved but still very cool that &lt;a href=&quot;https://www.macstories.net/reviews/quicktune-a-music-remote-app-for-mac-with-tiger-vibes/&quot;&gt;QuickTune was featured in MacStories&lt;/a&gt; yesterday. As John says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m not usually nostalgic about apps. I appreciate classic designs from the past, but I find ‘new’ more exciting. However, for every rule, there’s an exception, and for me, it’s Mario Guzmán’s beautiful, pixel-perfect reimagining of classic Apple music apps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’m kind of the same way – while I do feel that flat modern design sensibility has caused the Mac UI to lose some soul, I generally don’t worry about it a lot. But still, the kind of apps Mario makes do harken back to when beautiful apps mattered and there was a clear cut distinction between Mac operating systems and everything else. I really like that.&lt;/p&gt;
&lt;p&gt;The full MacStories article is &lt;a href=&quot;https://www.macstories.net/reviews/quicktune-a-music-remote-app-for-mac-with-tiger-vibes/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>Mario Guzmán has made some beautiful apps over the years, and QuickTune tops the list.</summary></item><item><title>Raycast AI Commands</title><link>https://scottwillsey.com/raycast-ai-commands</link><guid isPermaLink="true">https://scottwillsey.com/raycast-ai-commands</guid><description>One advantage of Raycast AI is its AI Commands functionality.</description><pubDate>Sun, 19 May 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://mastodon.social/@marcmagnin&quot;&gt;Marc Magnin&lt;/a&gt; brought up a point I hadn’t considered when &lt;a href=&quot;https://scottwillsey.com/chat-gpt-sherlock/&quot;&gt;I asked if ChatGPT desktop app might Sherlock Raycast Advanced AI for me&lt;/a&gt; – &lt;a href=&quot;https://prompts.ray.so/code&quot;&gt;Raycast AI Commands&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Raycast AI Commands (&lt;a href=&quot;https://manual.raycast.com/ai&quot;&gt;documented here in the Raycast manual&lt;/a&gt;) are really just prompts for the LLM to perform an action with specific instructions. You can also customize them to use specific models available to Raycast Advanced AI subscribers, so you could use Anthropic Claude 3 Opus for one thing, OpenAI GPT-4o for another, and so on.&lt;/p&gt;
&lt;p&gt;The reason it didn’t occur to me that I might miss these? I never use them. I haven’t tried to incorporate them into my workflow and as a result I have no idea if I would benefit from them or not. I will definitely have to do some testing and find out if I’m missing a useful tool or if I never figure out a use for them.&lt;/p&gt;
&lt;p&gt;One annoyance about them is also a side-effect of one of their main features – you will have to manually edit your AI commands to update to newer LLMs when it becomes useful to do so.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastAIEdit-03DCE29C-D381-47E5-AB66-FC76FF3F150A.jpg&quot;&gt;&lt;img alt=&quot;RaycastAIEdit&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1508&quot; src=&quot;https://scottwillsey.com/_astro/RaycastAIEdit-03DCE29C-D381-47E5-AB66-FC76FF3F150A.fYJBYdkd_ZjqXqH.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again, this isn’t a lazy miss because being able to choose your model is a feature, but it can eventually become a maintenance chore as well.&lt;/p&gt;
&lt;p&gt;You may be wondering “what are these good for?” Imagine you constantly write new regex based on text patterns. You might benefit from the Regex Generator AI command, which tells the LLM the following:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;Generate a regular expression that match the&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;specific patterns in the text. Return the regular&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;expression in a format that can be easily copied&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;and pasted into a regex-enabled text editor or&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;programming language. Then, give clear and&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;understandable explanations on what the regex is&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;doing and how it is constructed.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;Text: {selection}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;Regex:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Generate a regular expression that match thespecific patterns in the text. Return the regularexpression in a format that can be easily copiedand pasted into a regex-enabled text editor orprogramming language. Then, give clear andunderstandable explanations on what the regex isdoing and how it is constructed.Text: {selection}Regex:&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Let’s say I have some Markdown links, a subset of which looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--1fw:bold;--2:#6CB6FF;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;## &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;The Links&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Hibiscus Tea | Traditional Medicinals&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.traditionalmedicinals.com/collections/all/products/hibiscus-tea&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;J-BASKET BANCHA KAWAYANAGI TEA 48/8.00 OZ - JFC International&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.jfc.com/product/item/28211&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Constellation&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://tv.apple.com/us/show/constellation/umc.cmc.3lvo8a7ezxpysdy3gou3fsns0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;3 Body Problem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.netflix.com/title/81024821&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;‎Friendly Streaming Browser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://apps.apple.com/us/app/friendly-streaming-browser/id553245401?mt=12&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Emperor of the Fading Suns - Wikipedia&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://en.wikipedia.org/wiki/Emperor_of_the_Fading_Suns&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;GOG.com&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.gog.com/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;WineHQ - Run Windows applications on Linux, BSD, Solaris and macOS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.winehq.org/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Whisky - Run Modern Windows Games on macOS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://getwhisky.app/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Run Microsoft Windows software on Mac and Linux | CodeWeavers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.codeweavers.com/crossover/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Run Windows on Mac with a virtual machine | Parallels Desktop&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.parallels.com/products/desktop/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;## The Links- [Hibiscus Tea | Traditional Medicinals](https://www.traditionalmedicinals.com/collections/all/products/hibiscus-tea)- [J-BASKET BANCHA KAWAYANAGI TEA 48/8.00 OZ - JFC International](https://www.jfc.com/product/item/28211)- [Constellation](https://tv.apple.com/us/show/constellation/umc.cmc.3lvo8a7ezxpysdy3gou3fsns0)- [3 Body Problem](https://www.netflix.com/title/81024821)- [‎Friendly Streaming Browser](https://apps.apple.com/us/app/friendly-streaming-browser/id553245401?mt=12)- [Emperor of the Fading Suns - Wikipedia](https://en.wikipedia.org/wiki/Emperor_of_the_Fading_Suns)- [GOG.com](https://www.gog.com/)- [WineHQ - Run Windows applications on Linux, BSD, Solaris and macOS](https://www.winehq.org/)- [Whisky - Run Modern Windows Games on macOS](https://getwhisky.app/)- [Run Microsoft Windows software on Mac and Linux | CodeWeavers](https://www.codeweavers.com/crossover/)- [Run Windows on Mac with a virtual machine | Parallels Desktop](https://www.parallels.com/products/desktop/)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The Regex Generator AI Command comes up with this regular expression:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;\[(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*?&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)\]\((&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;https&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)\)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;\[(.*?)\]\((https?:\/\/[^\s)]+)\)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Using BBEdit’s Pattern Playground, you can see in the Capture groups section of the window that it captures the entire Markdown link and also the link name as the first capture group and the URL as the second capture group.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEditRegexPlayground-00710879-7F1A-4F9F-8022-B45887589798.jpg&quot;&gt;&lt;img alt=&quot;BBEditRegexPlayground&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;730&quot; src=&quot;https://scottwillsey.com/_astro/BBEditRegexPlayground-00710879-7F1A-4F9F-8022-B45887589798.Bgxcejx2_E7mlz.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s not a horrible result given the text I gave it. It makes me want to play with this specific AI command more on various pieces of data such as log files and see what it does.&lt;/p&gt;
&lt;p&gt;Anyway, all this to say that there are some advantages that Raycast AI has in how things can be massaged and customized to provide desirable responses, and the way the Raycast developers have made it extendable and customizable by the end users too.&lt;/p&gt;
&lt;p&gt;More to come on this, probably.&lt;/p&gt;</content:encoded><summary>One advantage of Raycast AI is its AI Commands functionality.</summary></item><item><title>Will ChatGPT Desktop Sherlock Raycast AI for Me?</title><link>https://scottwillsey.com/chat-gpt-sherlock</link><guid isPermaLink="true">https://scottwillsey.com/chat-gpt-sherlock</guid><description>Is OpenAI trying to Sherlock Raycast AI with its new macOS desktop app? Maybe.</description><pubDate>Sat, 18 May 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Interesting things are afoot at the company known as &lt;a href=&quot;https://openai.com/&quot;&gt;OpenAI&lt;/a&gt;. Apparently they’re in the Sherlocking business now, and their target is (unintentionally?) Raycast AI. I’m talking about an AI chat triggered by keyboard shortcut, with model selection, conversation history, contextual awareness and screenshot and image analysis, and more.&lt;/p&gt;
&lt;p&gt;Sadly, I don’t have access to it yet – OpenAI is rolling it out to people gradually, even for those of us who have ChatGPT Plus.&lt;/p&gt;
&lt;p&gt;Matt Birchler has a video overview of it, and I’m only going to pick one nit with Matt – Matt, how’d you manage to get access to it just by signing up as a newbie to ChatGPT Plus, while loyal old me who’s been handing over money for ages still can’t get it?!&lt;/p&gt;
&lt;p&gt;Oh well. Here’s his video.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yfRJ5G-iNHY&quot;&gt;ChatGPT just released a Mac app, here’s how it works - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/yfRJ5G-iNHY&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;My thoughts on this are that Raycast might feel some pain with respect to their $8/mo Advanced AI option at some point. It’s true that Raycast Advanced AI gives you access to several non-OpenAI models, but personally I never use them. Raycast has to keep changing their allowed token limits whenever OpenAI or one of the others makes changes, and sometimes it comes after customers asking why the token limits are still at the old limits instead of following what the AI model providers are currently doing for a given model.&lt;/p&gt;
&lt;p&gt;The way I usually use AI in Raycast is absolutely as a replacement for other third party apps like &lt;a href=&quot;https://www.macgpt.com&quot;&gt;MacGPT&lt;/a&gt;, &lt;a href=&quot;https://www.fridaygpt.app&quot;&gt;FridayGPT&lt;/a&gt;, etc. I use the hotkey (^G in my case) to open the separate AI chat window, which then basically behaves like a separate app with its own sidebar, history of chats, copy and paste, etc, etc. I very rarely use Raycast Quick AI, which is basically typing something in the standard Raycast text input and then hitting tab instead of return to submit it to the LLM of choice. This means that, for me, the OpenAI ChatGPT desktop app could well replace the Raycast Chat app.&lt;/p&gt;
&lt;p&gt;The benefit of most 3rd party apps over Raycast AI is that you bring your API key and get all the access you pay for already, whereas Raycast needs to provide their AI integration as a service and having people pay monthly for something they’re also paying for an API key for won’t work… except that’s what most of us using Raycast Advanced AI are probably already doing.&lt;/p&gt;
&lt;p&gt;The official ChatGPT desktop app, on the other hand, doesn’t use an API key, but instead uses your ChatGPT Plus subscription. I do pay for this still, in addition to an API key. And while it’s true that the Raycast Advanced AI option costs less than ChatGPT Plus, and it’s also true that it pays for itself for me, it still doesn’t make sense to pay for overlapping services unless there’s a tremendous need to. If I can get all the benefits of the Raycast AI Chat functionality in a desktop app that is included in the cost of my ChatGPT Plus subscription, I very probably will.&lt;/p&gt;
&lt;p&gt;Right now I just need to wait for the slow rollout to turn its Eye of Sauron upon me so I can give it a shot and find out for sure.&lt;/p&gt;</content:encoded><summary>Is OpenAI trying to Sherlock Raycast AI with its new macOS desktop app? Maybe.</summary></item><item><title>Image Search Text Recognition in Raycast and ScreenFloat</title><link>https://scottwillsey.com/image-text-recog</link><guid isPermaLink="true">https://scottwillsey.com/image-text-recog</guid><description>Raycast and ScreenFloat both contain some pretty amazing search features that use text recognition to find matching text in images.</description><pubDate>Sun, 28 Apr 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There I was, checking out &lt;a href=&quot;https://www.raycast.com&quot;&gt;Raycast&lt;/a&gt;’s &lt;a href=&quot;https://www.raycast.com&quot;&gt;updated website&lt;/a&gt; and looking at their tips videos, when I stumbled on the tip called &lt;a href=&quot;https://www.youtube.com/watch?v=c96IXGOo6E4&quot;&gt;Find Images by Text&lt;/a&gt;. Although I knew that Raycast would keep copied images in the clipboard history, what I did NOT know is that you can search those images not just by words matching the title, but words matching text IN the image.&lt;/p&gt;
&lt;p&gt;Example: I hit ⌘ Space (that’s Command Space) to invoke Raycast, type &lt;strong&gt;ch&lt;/strong&gt; (my alias for the Clipboard History function), and start typing “there I was”. Look at the results:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastCHImageOCR-3DDA949C-7624-4DA6-BD13-8024FBEBA98A.jpg&quot;&gt;&lt;img alt=&quot;Raycast Clipboard History Image Text Recognition&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1084&quot; src=&quot;https://scottwillsey.com/_astro/RaycastCHImageOCR-3DDA949C-7624-4DA6-BD13-8024FBEBA98A.N1T0noq1_Z2wCXKr.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first result is a file called Image (1252x631), which is a screenshot of this blog post when I started writing it, taken with &lt;a href=&quot;https://www.screenfloatapp.com&quot;&gt;ScreenFloat&lt;/a&gt; and copied into the clipboard. Raycast sees the words “there I was” in the image and returns it as a match to my clipboard history search. Pretty cool.&lt;/p&gt;
&lt;p&gt;Raycast will also let you designate folders to search for screenshots in, apart from images in clipboard history, and you can apply text recognition to those search as well. Open Raycast Settings by toggling Raycast open and typing ⌘, (that’s Command comma), select Extensions, search for the Search Screenshots command, and then verify that Text Recognition is not disabled but shows one of the accuracy level options instead.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastSearchScreenshots-D2BE75B5-6FD9-41D5-9D4E-B2197FDFDEB8.jpg&quot;&gt;&lt;img alt=&quot;Raycast Search Screenshots&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1150&quot; src=&quot;https://scottwillsey.com/_astro/RaycastSearchScreenshots-D2BE75B5-6FD9-41D5-9D4E-B2197FDFDEB8.DVqjdYOi_ZOt1Oj.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All that Raycast functionality is great, but since I’m using ScreenFloat to take my screenshots, what if I don’t want to have to copy an image into the clipboard or save it in one of those files to find it by text recognition? ScreenFloat has search by text recognition covered too.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.screenfloatapp.com&quot;&gt;ScreenFloat&lt;/a&gt; saves screenshots you’ve taken in the Shots Browser. You can open the Shots Browser with your assigned keyboard shortcut (⇧⌘1 in my case), hit ⌘F to start a search, and type the word “float”. The results are anything that has the word “float” in the image name, or anything that has the text “float” in the image itself somewhere.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatShotsBrowserTextSearch-9EFC5C9C-699B-4B12-98C7-C60960F1AEF7.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Shots Browser Text Search&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1030&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatShotsBrowserTextSearch-9EFC5C9C-699B-4B12-98C7-C60960F1AEF7.CZROREUC_15YIgy.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also see from the image above that ScreenFloat names the screenshots with the name of the app that was being screenshotted.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; You can rename images at any time in ScreenFloat, of course.&lt;/p&gt;
&lt;p&gt;This is all pretty amazing and handy,  and it sure makes finding things on my Mac a lot easier than before I used either of these tools. I love great software like these apps, and I love developing systems that mesh with my brain and that I can use and remember instinctively.&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;https://infosec.exchange/@nikolaidis&quot;&gt;Peter&lt;/a&gt; said when I showed him the ScreenFloat text recognition search, “I really, really, &lt;em&gt;really&lt;/em&gt; wish Notion would add OCR.”&lt;/p&gt;
&lt;p&gt;Me too, Peter. Me too.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I genuinely have no clue if that’s a word. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Raycast and ScreenFloat both contain some pretty amazing search features that use text recognition to find matching text in images.</summary></item><item><title>TextBuddy Custom Links</title><link>https://scottwillsey.com/custom-links</link><guid isPermaLink="true">https://scottwillsey.com/custom-links</guid><description>Custom Links is a pretty cool automation feature in TextBuddy for automatically transforming specific text patterns into clickable links.</description><pubDate>Sun, 21 Apr 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://retina.studio/textbuddy/&quot;&gt;TextBuddy&lt;/a&gt; is a macOS utility app I love that lets you process text in all sorts of interesting ways. I actually intend to talk about it in detail more some time, or more likely write several posts about it highlighting specific use cases. Today I learned about a feature of &lt;a href=&quot;https://retina.studio/textbuddy/&quot;&gt;TextBuddy&lt;/a&gt; called &lt;a href=&quot;https://retina.studio/textbuddy/custom-links/&quot;&gt;Custom Links&lt;/a&gt; that I’d been woefully unaware of.&lt;/p&gt;
&lt;p&gt;Custom Links basically applies regular expressions to any text in TextBuddy’s text window and turns matches for any of the regular expressions into clickable links based on your specification.&lt;/p&gt;
&lt;p&gt;Huh?&lt;/p&gt;
&lt;p&gt;It sounds more confusing than it is. Here’s an example that works perfectly, even if it’s not necessarily the best or only way to solve this problem. But it is a an instance of something that produces unhelpful link fragments that I want to convert to useful, clickable links.&lt;/p&gt;
&lt;p&gt;Let’s say you get emails from your ticketing system and they include links to the ticket in question that look like the following:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/TicketEmail-12439F99-9561-4F21-8B64-D0B31E98E529.jpg&quot;&gt;&lt;img alt=&quot;TicketEmail&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;910&quot; src=&quot;https://scottwillsey.com/_astro/TicketEmail-12439F99-9561-4F21-8B64-D0B31E98E529.BeZosHQq_KmYJs.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x3C;URL: /Ticket/Display.html?id=89285 &gt; is not a useful link, but if you add your RT instance’s domain name to it, it can be. That’s where TextBuddy’s Custom Links feature comes in.&lt;/p&gt;
&lt;p&gt;First of all, copying text from any app to TextBuddy is simple – just highlight the text, and choose &lt;strong&gt;Services - Send to TextBuddy&lt;/strong&gt; from the app menu (the menu with the app’s name in it, like Chrome in this case) or right-click the highlighted text and choose &lt;strong&gt;Services - Send to TextBuddy&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ServicesMenu-5B76A1F3-2461-4D43-A94E-6035434080B8.jpg&quot;&gt;&lt;img alt=&quot;ServicesMenu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;992&quot; src=&quot;https://scottwillsey.com/_astro/ServicesMenu-5B76A1F3-2461-4D43-A94E-6035434080B8.gfJdinCv_ZpBDSA.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This results in the following text in TextBuddy’s text window in my case.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/TextBuddyNoLink-632E04EC-27BD-4E3F-95E4-210436AAA7E7.jpg&quot;&gt;&lt;img alt=&quot;TextBuddyNoLink&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;806&quot; src=&quot;https://scottwillsey.com/_astro/TextBuddyNoLink-632E04EC-27BD-4E3F-95E4-210436AAA7E7.CHHBANEz_Z1RifFX.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yeah, that Ticket URL is still not helpful.&lt;/p&gt;
&lt;p&gt;To set up the Custom Link, click the TextBuddy Scripts menu and choose “Reveal Secret Custom Links File”. This opens a finder window to ~/Library/Application Support/com.clickontyler.TextBuddy, revealing a file called CustomLinks.txt.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/CustomLinksFileMenuOption-ABFAAF1E-6B6E-412B-A746-69E5E8BEBE0B.jpg&quot;&gt;&lt;img alt=&quot;CustomLinksFileMenuOption&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;662&quot; src=&quot;https://scottwillsey.com/_astro/CustomLinksFileMenuOption-ABFAAF1E-6B6E-412B-A746-69E5E8BEBE0B.oHt6zhzN_1N796w.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/CustomLinksTextFile-ABFAAF1E-6B6E-412B-A746-69E5E8BEBE0B.jpg&quot;&gt;&lt;img alt=&quot;CustomLinksTextFile&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;802&quot; src=&quot;https://scottwillsey.com/_astro/CustomLinksTextFile-ABFAAF1E-6B6E-412B-A746-69E5E8BEBE0B.BZoNu2Nv_pjxlm.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Open the file in an editor. If you haven’t added anything to it previously, it’ll be empty. This file should contain two lines per Custom Link – the first line for the regular expression and the second line to act as a template for the URL to create for the Custom Link. In my example case, I added the following two lines:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;Ticket &amp;#x3C;URL\: \/Ticket\/Display\.html\?id=([0-9]{4,6}) &gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;https://rt.domain.com/Ticket/Display.html?id={{1}}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;https://rt.domain.com/Ticket/Display.html?id={{1}}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This looks for anything that looks like &lt;code&gt;&amp;#x3C;URL: /Ticket/Display.html?id=12345 &gt;&lt;/code&gt; , where 12345 can be any 4 to 6 digit number, and uses that number to create a URL of &lt;code&gt;https://rt.domain.com/Ticket/Display.html?id=12345&lt;/code&gt; from it.&lt;/p&gt;
&lt;p&gt;I guess in retrospect I could have included everything from Ticket through the number in the capture group instead of just the number itself. Then I could have simplified the url template string. That method looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;Ticket &amp;#x3C;URL\: (\/Ticket\/Display\.html\?id=[0-9]{4,6}) &gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;https://rt.domain.com{{1}}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;https://rt.domain.com{{1}}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The change to the regular expression is subtle – I move the first parenthesis for the capture group from right in front of &lt;code&gt;[0-9]&lt;/code&gt; to right in front of &lt;code&gt;\/Ticket&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;Once you have what you want, save the file so that your regular expression and URL template string can go into effect.&lt;/p&gt;
&lt;p&gt;Now you can highlight the offending text in your email and choose Services - Send to TextBuddy from your browser’s app menu (the menu with the browser’s name, such as Chrome in this example) to get it into TextBuddy’s text window.&lt;/p&gt;
&lt;p&gt;And thanks to the magic of Custom Links, although the link in the copied text LOOKS the same in TextBuddy, it’s now a clickable link with the correct URL as the target.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/TextBuddyClickableLink-0BA5F58C-8535-4A2F-85E2-B197B2324490.jpg&quot;&gt;&lt;img alt=&quot;TextBuddyClickableLink&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1060&quot; src=&quot;https://scottwillsey.com/_astro/TextBuddyClickableLink-0BA5F58C-8535-4A2F-85E2-B197B2324490.DCkc8eQO_2th3k9.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By the way, I tested my regular expression in &lt;a href=&quot;https://www.barebones.com/products/bbedit/index.html&quot;&gt;BBEdit&lt;/a&gt; using its &lt;a href=&quot;https://www.barebones.com/support/technotes/PatternPlaygrounds.html&quot;&gt;Pattern Playground&lt;/a&gt; feature. If you have BBEdit and you haven’t used this yet, you can find it in the File menu under “New - Pattern Playground”, or in the Search menu’s “Pattern Playground” option.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BBEditPatternPlayground-528B8A6C-A525-4944-86DB-FBABEC13A3F9.jpg&quot;&gt;&lt;img alt=&quot;BBEditPatternPlayground&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1650&quot; src=&quot;https://scottwillsey.com/_astro/BBEditPatternPlayground-528B8A6C-A525-4944-86DB-FBABEC13A3F9.Cnnp5T4n_Z1YJklF.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><summary>Custom Links is a pretty cool automation feature in TextBuddy for automatically transforming specific text patterns into clickable links.</summary></item><item><title>11 Ways to Check Linux/Unix Operating System Uptime - Adamsdesk</title><link>https://scottwillsey.com/11-ways-uptime</link><guid isPermaLink="true">https://scottwillsey.com/11-ways-uptime</guid><description>The various methods used to obtain a GNU/Linux or Unix operating system’s uptime, plus a fun entertaining bonus.</description><pubDate>Sat, 13 Apr 2024 20:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, this is a fun one from &lt;a href=&quot;https://www.adamsdesk.com&quot;&gt;Adam Douglas&lt;/a&gt;. I knew most of these, but a couple are new. And that video? Definitely new to me. &lt;span role=&quot;img&quot; aria-label=&quot;smiling face with open mouth &amp;#x26; smiling eyes&quot;&gt;😄&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The system uptime can be a useful metric to determine when was the last time a computer or device was booted when paired with an issue or incident. By its self it is not always a vital metric, even though historically some wish to achieve the longest uptime possible. It all depends on the circumstances. No matter what your reasoning might be, let’s take a look at the definition of system uptime, the test environment, assumptions, the various methods used to obtain a GNU/Linux or Unix operating system’s uptime and finally the conclusion with a fun entertaining bonus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.adamsdesk.com/posts/check-linux-unix-system-uptime/&quot;&gt;11 Ways to Check Linux/Unix Operating System Uptime - Adamsdesk&lt;/a&gt;&lt;/p&gt;</content:encoded><summary>The various methods used to obtain a GNU/Linux or Unix operating system’s uptime, plus a fun entertaining bonus.</summary></item><item><title>Small Web, Indie Web</title><link>https://scottwillsey.com/small-web</link><guid isPermaLink="true">https://scottwillsey.com/small-web</guid><description>The internet is better than ever, if you just focus your attention.</description><pubDate>Sat, 13 Apr 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’re the kind of person I imagine would find and read this, you’ve read a ton of words already on the concepts of small web, indie web, and personal websites. I’m not going to pretend that my post is the one you have been waiting for on the topic, but I do want to say a couple things about the inspiration I’ve received from some of these people.&lt;/p&gt;
&lt;p&gt;I’ve had my own website for years and years in various incarnations. No one ever reads it, to the best of my knowledge, and (like my podcasts) I’m kind of shouting into the void. But I don’t care, and here’s why:&lt;/p&gt;
&lt;p&gt;I love the indie web. I love the modern take on personal websites. They are about linking and sharing and going down rabbit holes in a way that the way USED to be about, but now with modern design and personal touches of whimsy. In a way, as terrible as the mainstream web has become, infected with an almost certainly incurable cancer of advertising-driven enshiteification (sic), the indie web, the small web, the personal web is better than ever. And it makes the internet better than ever too, if you just focus your attention.&lt;/p&gt;
&lt;p&gt;Nowhere is this better presented than Rachel’s &lt;a href=&quot;https://projects.kwon.nyc/internet-is-fun/&quot;&gt;The internet used to be fun&lt;/a&gt; project, which I’ve spotlighted in my current &lt;a href=&quot;https://scottwillsey.com/links#CoolSiteSpotlight&quot;&gt;Cool Site Spotlight&lt;/a&gt; on my &lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;Links&lt;/a&gt; page. In case you’re a doubter, or you just haven’t noticed yet that many good people are actively trying to bring back the soul of the internet, Rachel’s got link after link of smart person after smart person talking about this trend and its importance.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://projects.kwon.nyc/internet-is-fun/&quot;&gt;&lt;img alt=&quot;The internet used to be fun&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1146&quot; src=&quot;https://scottwillsey.com/_astro/TheInternetUsedToBeFun-30228B51-47BC-49AC-AB45-6B32213A18B6.C_obvxsL_2qlGMi.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And it &lt;em&gt;is&lt;/em&gt; important, dammit. The web doesn’t have to be total garbage. The people that have ruined everything with advertising technology that makes the web impossible to read and allows bad actors to stuff it full of malware don’t care about you, and it’s time to stop caring about them. To hell with them and the dumb billion dollar horsey they rode in on. It’s time to focus on the good and @#$@ those other guys and their terrible way of making a living.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anyway, here’s to Rachel and here’s to all the sites she links to. Let’s all link to them, and let’s all link to each other.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;I want to make it VERY clear that I wholly support and endorse small sites and podcasts that also make a living with sponsors, but who don’t employ user-hostile ad technology. I’m talking about the &lt;a href=&quot;https://sixcolors.com&quot;&gt;Six Colors&lt;/a&gt; and &lt;a href=&quot;https://www.macstories.net&quot;&gt;MacStories&lt;/a&gt; and &lt;a href=&quot;https://daringfireball.net&quot;&gt;Daring Fireballs&lt;/a&gt; of the world, stuff like that . Things you know with sponsors that don’t piss you off every time you visit them. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>The internet is better than ever, if you just focus your attention.</summary></item><item><title>Cool Site Spotlight</title><link>https://scottwillsey.com/cool-site-spotlight</link><guid isPermaLink="true">https://scottwillsey.com/cool-site-spotlight</guid><description>Highlighting sites of interest, one at a time.</description><pubDate>Tue, 09 Apr 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Did you know my &lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;Links&lt;/a&gt; page has an ever-changing &lt;a href=&quot;https://scottwillsey.com/links#CoolSiteSpotlight&quot;&gt;Cool Site Spotlight&lt;/a&gt;? I’ve mentioned it tangentially before, but I want to mention both it and my Links page specifically now because I think both are pretty cool.&lt;/p&gt;
&lt;p&gt;I started my Links page in January of 2024 with the intention of making it a blogroll, but it’s much more than that now. For one thing, right at the top is a Cool Site Spotlight highlighting one site I’ve stumbled across that I think is unusually neat. I rotate entries out into the &lt;a href=&quot;https://scottwillsey.com/links#cool-sites-archive&quot;&gt;Cool Sites Archive section of the Links page&lt;/a&gt; as I highlight a new one.&lt;/p&gt;
&lt;p&gt;Not only does this keep me interested and looking around me, it should serve as a good idea and interest generator for my readers too.&lt;/p&gt;
&lt;p&gt;If the web is ever going to be cool again, this is how it starts: finding and linking to things that make it a better place.&lt;/p&gt;</content:encoded><summary>Highlighting sites of interest, one at a time.</summary></item><item><title>Really Specifically</title><link>https://scottwillsey.com/rss-podcast</link><guid isPermaLink="true">https://scottwillsey.com/rss-podcast</guid><description>Martin Feld&apos;s Really Specific Stories podcast delves deep into the topic of what podcasts mean to people and how they interact with and/or produce them.</description><pubDate>Mon, 08 Apr 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here’s a pitch for you: how’d you like to listen to a podcast that is both fascinating from the perspective of being about tech nerdery and podcasts in general AND that is also part of a PhD project? There can only be one that fits this definition, and it’s &lt;a href=&quot;https://social.lol/@martinfeld&quot;&gt;Martin Feld&lt;/a&gt;’s &lt;a href=&quot;https://www.rsspod.net&quot;&gt;Really Specific Stories&lt;/a&gt; podcast.&lt;/p&gt;
&lt;p&gt;If you haven’t listened, you should. Don’t start with the &lt;a href=&quot;https://www.rsspod.net/scott-willsey&quot;&gt;latest episode&lt;/a&gt; though (featuring yours truly), start from the beginning or pick any other episode at random and get a feel for what this project is all about.&lt;/p&gt;
&lt;p&gt;I really enjoy the intentional way that Martin delves into the topic of what podcasts mean to people and how they interact with and/or produce them. He digs deeply into people’s relationships with podcasting in a way that I haven’t heard anywhere else.&lt;/p&gt;
&lt;p&gt;I’m sure Adam Curry has uttered more words on the concept of podcasting, but I’d be hard pressed to imagine any of it is as illuminating or focused on understanding what podcasting is all about as Really Specific Stories is.&lt;/p&gt;</content:encoded><summary>Martin Feld&apos;s Really Specific Stories podcast delves deep into the topic of what podcasts mean to people and how they interact with and/or produce them.</summary></item><item><title>ScreenFloat Your Screenshots</title><link>https://scottwillsey.com/screenfloat</link><guid isPermaLink="true">https://scottwillsey.com/screenfloat</guid><description>ScreenFloat is my current choice of screenshot utility for the Mac because of its functionality and customizability.</description><pubDate>Sat, 23 Mar 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the brilliant features of macOS is its &lt;a href=&quot;https://support.apple.com/guide/mac-help/take-a-screenshot-mh26782/mac&quot;&gt;built-in screenshot tools&lt;/a&gt;. Not all operating systems are as aware of the fact that people need to take screenshots and edit and annotate them quickly as macOS appears to be. Even so, many excellent third-party utilities exist to take this to eleven.&lt;/p&gt;
&lt;h2 id=&quot;the-app--screenfloat&quot;&gt;The App – ScreenFloat&lt;/h2&gt;
&lt;p&gt;If I start talking about the options and making comparisons, I’m going to get into a holy war and I don’t want that.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Therefore, I’m treating my coverage of macOS screenshot utilities like it’s a Highlander. &lt;a href=&quot;https://www.youtube.com/watch?v=sqcLjcSloXs&quot;&gt;THERE CAN BE ONLY ONE!&lt;/a&gt; And that one’s name is &lt;a href=&quot;https://eternalstorms.at/ScreenFloat/&quot;&gt;ScreenFloat&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatWindows-4F8D9C4B-858B-4DC6-BB66-6C1ACECA303B.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Windows&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;924&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatWindows-4F8D9C4B-858B-4DC6-BB66-6C1ACECA303B.LlXzW-bk_1NryJ9.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ScreenFloat has a lot of ideas, and those ideas are translated into features. It can be a bit overwhelming, but in reality it’s fairly easy to wrap your head around the features you’ll use most, and then you can dig into customizing the app and really getting some work done. That second point is important because when I first started using ScreenFloat, I was missing some of my workflow from &lt;a href=&quot;https://shottr.cc&quot;&gt;Shottr&lt;/a&gt;. But the good news is I was able to get back quick annotation and copy to clipboard functionality with ScreenFloat just by making a couple of tweaks.&lt;/p&gt;
&lt;h2 id=&quot;the-premise&quot;&gt;The Premise&lt;/h2&gt;
&lt;p&gt;ScreenFloat’s main premise is that you may want to take a screenshot and then float it above other windows so you can use it as a reference or so that you can drag it easily into other apps. The good news is that this can be very helpful. The bad news is that sometimes floating windows get in the way. The good news is that you can close a floating window with a keyboard shortcut or by clicking on its window close control, and ScreenFloat will keep it in the Shots Browser to be recalled at any time.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatShotsBrowser-55AB0430-EE3E-45EE-815A-5ADDEDEE23D0.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Shots Browser&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1030&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatShotsBrowser-55AB0430-EE3E-45EE-815A-5ADDEDEE23D0.iBvMXTmd_2oHOze.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you use the keyboard shortcut to close (actually hide) the floating screenshot, you can open it again (unhide, technically) with the same keyboard shortcut. Once you close by clicking the window close control, however, you’ll have to open the Shots Browser window and double-click it to get it back into Floating Shot mode.&lt;/p&gt;
&lt;h2 id=&quot;the-features&quot;&gt;The Features&lt;/h2&gt;
&lt;p&gt;Floating Shots can have actions performed on them – annotating, exporting, cropping, sharing, dragging, and dropping, and more.&lt;/p&gt;
&lt;h3 id=&quot;dragging-and-dropping&quot;&gt;Dragging and Dropping&lt;/h3&gt;
&lt;p&gt;Dragging and dropping and super quick file saving can be performed by the Floating Shot’s File Drag Control&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatFileDragControl-9AED6C15-D7DE-45FD-9E3D-750856A8087C.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Drag and Drop Control&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;770&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatFileDragControl-9AED6C15-D7DE-45FD-9E3D-750856A8087C.n55-NQ8B_1zyR3F.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This lets you quickly drag the screenshot into Messages , an email, or even into Finder to quick save the image to disk.&lt;/p&gt;
&lt;p&gt;Note that you can still export the file with options by clicking on the Floating Shot’s Action Menu&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;, clicking Export… and making some simple choices.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatActionsMenu-2ECE77A6-461C-4E1E-86F4-2B00A6523F12.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Action Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;860&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatActionsMenu-2ECE77A6-461C-4E1E-86F4-2B00A6523F12.D9SipGEV_1TNDX3.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Speaking of that Action Menu…&lt;/p&gt;
&lt;h3 id=&quot;action-menu&quot;&gt;Action Menu&lt;/h3&gt;
&lt;p&gt;The Action Menu has a lot of the things you’d expect – Copy, Open Copy With, Export, Crop, Annotate, and more.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatActionMenuOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Action Menu Options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1004&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatActionMenuOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.BiKdbX1M_2v0egf.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the “more” things is Data Detection. ScreenFloat lets you detect text and copy it or redact it as desired. It’s really pretty magical.&lt;/p&gt;
&lt;p&gt;Another thing I use all the time in the Action Menu is Annotate. The annotation options are comprehensive and are customizable before and after creating an annotation. For example, you can double click the rectangle outline tool to customize it or you can just click it once, draw a rectangle, and then click the Select tool to edit the rectangle you’ve just drawn. This same methodology holds true for all the annotation tools: Draw, Rectangle, Oval, Line, Arrow, Star, Checkmark, X-mark, Text, Numbered List, Callout, and Redact.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatRectangleOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Rectangle Options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;774&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatRectangleOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.BLWVCw2d_zJX0W.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatRectangleEdit-FE2A90A0-139F-40CC-9DC4-C2330073BC13.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Rectangle Editing&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;664&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatRectangleEdit-FE2A90A0-139F-40CC-9DC4-C2330073BC13.BJlrkLsr_ZT4F7t.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Numbered List isn’t exactly what it sounds like. It lets you drop numbers on an image in order to call out steps or set the order of items of interest. If you’re making a screenshot to show someone the order to click things on a UI, this is what you want.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatNumberedListOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Numbered List Options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;922&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatNumberedListOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.B1IP9mV9_Z11K8zV.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Redact lets you redact with a solid color, complete with the ability to set the color from swatches or a color picker, or the common pixelation redaction, or with a strange gradient looking blur effect that I don’t think I’ll ever use. This is in addition to the Data Detection and its ability to redact, although the redactions are the same style and can also be edited in the same way as the manual redactions by selecting them with the Select tool.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatRedactionOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Redaction Options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;860&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatRedactionOptions-FE2A90A0-139F-40CC-9DC4-C2330073BC13.DcRhOYmr_1jgCG8.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;double-click-workflows&quot;&gt;Double-Click Workflows&lt;/h3&gt;
&lt;p&gt;The eagle-eyed amongst you may have noticed that Annotate is stuck in the Action Menu and therefore it takes extra clicking after grabbing a screenshot to be able to annotate it. Other apps, like Shottr, drop you into a view that shows you annotation tools immediately after capturing the screenshot. The good news is, ScreenFloat lets you create double-click workflows that get you very close to that simplicity.&lt;/p&gt;
&lt;p&gt;In ScreenFloat’s settings, on the Floating Shots tab, you can set actions that occur when double-clicking with or without modifier keys. In my case, if I double-click a floating shot without modifiers, it copies the image to the clipboard. If I double-click it while holding command, it immediately jumps into Annotate mode without me having to use the Action Menu to select it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatDoubleClickCopy-80722AEE-BA3C-494F-A87C-159C12409F23.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Double-Click Copy Workflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;908&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatDoubleClickCopy-80722AEE-BA3C-494F-A87C-159C12409F23.DCpruob2_Z1mdFiO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatDoubleClickCommandAnnotate-80722AEE-BA3C-494F-A87C-159C12409F23.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Double-Click Annotate Workflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1044&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatDoubleClickCommandAnnotate-80722AEE-BA3C-494F-A87C-159C12409F23.irgDONdz_1NjOSm.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also have modifiers to double-click and resize the floating window up or down by 50%.&lt;/p&gt;
&lt;p&gt;It’s a very clever and endlessly customizable way to create shortcuts to editing actions that you’ll use all the time.&lt;/p&gt;
&lt;h3 id=&quot;shots-browser&quot;&gt;Shots Browser&lt;/h3&gt;
&lt;p&gt;Floating screen shots are one thing, but what about if you want to recall one, or annotate it or export or otherwise save it later? ScreenFloat has you covered. Every snapshot you take goes into the Shots Browser, which can be recalled at any time with a keyboard shortcut, such as ⌘-⇧-1.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatShotsBrowser-26F5E562-4B9A-4B3F-9983-47AB28B53C57.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Shots Browser&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1030&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatShotsBrowser-26F5E562-4B9A-4B3F-9983-47AB28B53C57.D3Y9Bv1O_Z1xScCK.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With Shots Browser, you can double-click an image to make it a Floating Shot again, so you can annotate or do whatever you want with it. But you can also drag images straight from the Shots Browser to other apps, which makes it handy for taking a bunch of screenshots for, say, a blog post, closing the resulting Floating Shot, and then getting them from the Shots Browser later when you’re ready to use them in your writing.&lt;/p&gt;
&lt;p&gt;The Shots Browser feature is really nice if you’re using screenshots to document a procedure and you want to get all your shots in one place to edit and choose from later.&lt;/p&gt;
&lt;p&gt;You can also go really crazy and create folders, smart folders, tags, descriptions, and ratings. Like I said, ScreenFloat does not skimp on features.&lt;/p&gt;
&lt;h3 id=&quot;export-options&quot;&gt;Export Options&lt;/h3&gt;
&lt;p&gt;Of course besides the usual drag and drop and open copy in options, you can export a Floating Shot using the Actions menu and Choosing Export. You can choose options related to naming, format, whether or not to include annotations, size, alpha, and whether or not to reduce dpi resolution.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ScreenFloatExportOptions-7116AD16-65C1-4F59-8FDC-1E1DC8EAFDB8.jpg&quot;&gt;&lt;img alt=&quot;ScreenFloat Export Options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;992&quot; src=&quot;https://scottwillsey.com/_astro/ScreenFloatExportOptions-7116AD16-65C1-4F59-8FDC-1E1DC8EAFDB8.VcO7VYla_19xB2G.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-conclusion&quot;&gt;The Conclusion&lt;/h2&gt;
&lt;p&gt;Honestly, what pushed me back to using ScreenFloat wholeheartedly was discovering the customization options for all the annotations and the double-click workflows. Being able to quickly copy something to the clipboard or jump right into annotating it are things I can’t live without.&lt;/p&gt;
&lt;p&gt;ScreenFloat is a very powerful, very customizable screenshot tool for the Mac that I think trounces most of the competition. The other one I’d recommend is Shottr, which takes a much simpler but still feature-rich approach. It’s another great application. For me though, ScreenFloat wins easily with its Shots Browser, Floating Shots, and easy customization with workflows and tool options.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;xNapper fans are especially zealous, in my experience. I understand – it’s a great app, but still. Breathe, people. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;I don’t know if that’s what Matthias calls it, but it’s what I call it until I find out otherwise. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;Again, I have no idea if this is the correct name for this UI element, but it sounds good. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>ScreenFloat is my current choice of screenshot utility for the Mac because of its functionality and customizability.</summary></item><item><title>Raycast Script Command for Text Parsing</title><link>https://scottwillsey.com/raycast-sc-text-parsing</link><guid isPermaLink="true">https://scottwillsey.com/raycast-sc-text-parsing</guid><description>Raycast script commands are great for all kinds of scripted tasks, and I&apos;m increasingly using them for tasks related to my website.</description><pubDate>Sun, 03 Mar 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I previously wrote about &lt;a href=&quot;https://scottwillsey.com/default-browser/&quot;&gt;using Raycast script commands to switch default browsers&lt;/a&gt;. Raycast script commands are really good for scripting all kinds of other things too. One example is a Python script command I created yesterday for the purpose of grabbing a couple values from a JSON file and formatting them into a markdown hyperlink and putting it on the clipboard.&lt;/p&gt;
&lt;p&gt;On my site’s &lt;a href=&quot;https://scottwillsey.com/links/&quot;&gt;Links&lt;/a&gt; page, I have a Cool Site Spotlight section at the top which I use to showcase some cool site or other for a short, random period of time. The data for this Cool Site Spotlight is saved in a JSON file that looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/data/spotlight.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://ericportis.com/posts/2024/okay-color-spaces/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Okay, Color Spaces&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;What is a color space? Why should you care? Do you like interactive visualizations to help you learn things? Do you like cool sites regardless of topic? If the answer to at least one of these questions is &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;YEAH, I LIKE THAT!!!!!?!!!&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;, then you need to spend some time here.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;OkColorSpaces-036630FA-D437-4101-A5AB-7C7338DCD953&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{    &amp;#x22;Site&amp;#x22;: &amp;#x22;https://ericportis.com/posts/2024/okay-color-spaces/&amp;#x22;,    &amp;#x22;Title&amp;#x22;: &amp;#x22;Okay, Color Spaces&amp;#x22;,    &amp;#x22;Description&amp;#x22;: &amp;#x22;What is a color space? Why should you care? Do you like interactive visualizations to help you learn things? Do you like cool sites regardless of topic? If the answer to at least one of these questions is \&amp;#x22;YEAH, I LIKE THAT!!!!!?!!!\&amp;#x22;, then you need to spend some time here.&amp;#x22;,    &amp;#x22;Image&amp;#x22;: &amp;#x22;OkColorSpaces-036630FA-D437-4101-A5AB-7C7338DCD953&amp;#x22;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;My Astro Links page uses an Astro component to create the web view based on this data in spotlight.json.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/components/Spotlight.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:assets&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Cool Site Spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;spotlight-details&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Site&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../assets/images/posts/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;densities&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Title&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Site&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Title&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Description&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Site&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;fluent:globe-star-20-regular&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Site&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Site&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;h1&gt;Cool Site Spotlight&lt;/h1&gt;  &lt;div class=&quot;&quot;&gt;    &lt;div&gt;      &lt;a href=&quot;&quot;&gt;        &lt;Image          src={import(&amp;#x60;../assets/images/posts/${spotlight.Image}.png&amp;#x60;)}          width=&amp;#x22;300&amp;#x22;          densities={[2, 3]}          alt={spotlight.Title}        /&gt;      &lt;/a&gt;    &lt;/div&gt;    &lt;div&gt;      &lt;h4&gt;&lt;a href=&quot;&quot;&gt;{spotlight.Title}&lt;/a&gt;&lt;/h4&gt;      &lt;p&gt;{spotlight.Description}&lt;/p&gt;      &lt;p&gt;        &lt;a href=&quot;&quot;&gt;&lt;/a        &gt;        &lt;a href=&quot;&quot;&gt;{spotlight.Site}&lt;/a&gt;            &quot;&gt;&lt;div&gt;&lt;/div&gt;
&lt;p&gt;You can probably argue about why I used a JSON file for this section, but basically it’s because the view is complicated enough that letting Astro create it from Markdown wasn’t going to work and I did not want to mix data and UI in my Spotlight.astro component. Having an Astro component map JSON file data, on the other hand, is super easy and lets me keep the site info separate from the Cool Site Spotlight UI implementation.&lt;/p&gt;
&lt;p&gt;Everything else in the Links page comes from a standard markdown content page located in &lt;code&gt;src/content/links/links.md&lt;/code&gt;. The Cool Sites section of the Links page comes from this portion of links.md:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/content/links/links.md&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--1fw:bold;--2:#6CB6FF;--2fw:bold&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;## &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;Cool Sites&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Lene Saile, developer and designer living in Madrid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://www.lenesaile.com/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;omg.lol - A lovable web page and email address, just for you&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://home.omg.lol/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;PDX Food Weeks&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://pdx-food-weeks.vercel.app/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;samwho&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://samwho.dev/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;VKC.sh | Veronica Explains – Veronica explains even more&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://vkc.sh/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0451A5;--2:#F69D50&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;The Yesterweb - Reclaiming the Internet&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;https://yesterweb.org/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;## Cool Sites- [Lene Saile, developer and designer living in Madrid](https://www.lenesaile.com/)- [omg.lol - A lovable web page and email address, just for you](https://home.omg.lol/)- [PDX Food Weeks](https://pdx-food-weeks.vercel.app/)- [samwho](https://samwho.dev/)- [VKC.sh | Veronica Explains – Veronica explains even more](https://vkc.sh/)- [The Yesterweb - Reclaiming the Internet](https://yesterweb.org/)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;When I want to change the site that I’m spotlighting, I put the currently spotlighted site in this section  of links.md and then put the new site data in the JSON file. Up until now, this has meant manually copying the Title value and the Site value out of spotlight.json and manually writing out the markdown link in the Cool Sites section of links.md.&lt;/p&gt;
&lt;p&gt;Yesterday I finally realized I was tired of copying twice and pasting twice and typing all the markdown formatting characters just to move a link to a website from one part of my Links page to another. My solution was to create a Raycast script command that does it for me.&lt;/p&gt;
&lt;p&gt;I created my script command the standard way by using the Raycast “Create Script Command” command and filling in some information. I chose the Python template, set it to Full Output just so I can see what the transformation looks like, gave it the title Spotlight Site to Cool Site, which is what this command will show up in Raycast as, and gave it a description and a package name.&lt;/p&gt;
&lt;p&gt;I don’t actually know what the package name does for me, but I like to set similar items to the same Package Name just to be sure. All script commands that are for working on the website go in the Website package name.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastSpotlightLinkScriptCommand-E1628E4B-68E2-4FBA-AA05-54AF3FADA540.jpg&quot;&gt;&lt;img alt=&quot;Creating the Spotlight Site to Cool Site script command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1084&quot; src=&quot;https://scottwillsey.com/_astro/RaycastSpotlightLinkScriptCommand-E1628E4B-68E2-4FBA-AA05-54AF3FADA540.CuwpByiz_fxaJP.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This creates a relatively empty command script in the directory of my choosing (I put them all in a folder called ~/Scripts/Raycast/script commands) containing one line of Python. I tend to edit my script commands in BBEdit (as opposed to VSCode, which I use for website development and some other types of programming), so I fired it up and made the following very small, very simple Python script.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;~/Scripts/Raycast/script commands/spotlight-site-to-cool-site.py&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/usr/bin/env python3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.title Spotlight site to Cool Site&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.mode fullOutput&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.packageName Website&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.description Coverts Spotlight.json to markdown link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; pyperclip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Open the Spotlight JSON file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;load&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Get the &apos;Site&apos; and &apos;Title&apos; values&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;site &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#000000&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Create a markdown link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;markdown_link &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&apos;- [&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;)&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;pyperclip&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF&quot;&gt;markdown_link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/usr/bin/env python3# Required parameters:# @raycast.schemaVersion 1# @raycast.title Spotlight site to Cool Site# @raycast.mode fullOutput# Optional parameters:# @raycast.packageName Website# Documentation:# @raycast.description Coverts Spotlight.json to markdown link# @raycast.author scott_willsey# @raycast.authorURL https://raycast.com/scott_willseyimport pyperclipimport json# Open the Spotlight JSON filewith open(&amp;#x27;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&amp;#x27;, &amp;#x27;r&amp;#x27;) as f:    data = json.load(f)# Get the &amp;#x27;Site&amp;#x27; and &amp;#x27;Title&amp;#x27; valuessite = data.get(&amp;#x27;Site&amp;#x27;)title = data.get(&amp;#x27;Title&amp;#x27;)# Create a markdown linkmarkdown_link = f&amp;#x27;- [{title}]({site})&amp;#x27;pyperclip.copy(markdown_link)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;A full half of it is headers for things Raycast needs to know. The other half is the Python script. It’s very simple.&lt;/p&gt;
&lt;p&gt;First it opens &lt;code&gt;/Users/scott/Sites/scottwillsey/src/data/spotlight.json&lt;/code&gt; for reading and loads the data as JSON. It then grabs the values for the “Site” and “Title” keys. It then creates a variable called markdown_link formatted as &lt;code&gt;- [{title}]({site})&lt;/code&gt; with those values inserted correctly to create a markdown hyperlink, and copies that to the clipboard using &lt;code&gt;pyperclip.copy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Regarding pyperclip: “&lt;a href=&quot;https://pypi.org/project/pyperclip/&quot;&gt;Pyperclip is a cross-platform Python module for copy and paste clipboard functions. It works with Python 2 and 3.&lt;/a&gt;”.&lt;/p&gt;
&lt;p&gt;You can install pyperclip using pip, which brings up a whole thing about Python and how you install it and how that affects importing things using pip, but I won’t go there today. But suffice it to say that the Python world is a mess when it comes to ease of use and maintainability. A whole lot of someones should be super ashamed of themselves for letting this situation occur and then fester.&lt;/p&gt;
&lt;p&gt;Suffice it to say that you need to install pyperclip on your Mac for this to work. Good luck.&lt;/p&gt;
&lt;p&gt;To run the command script, I hit the Raycast hotkey (⌘-, in my case), and start typing “Spotlight”. When I see what I want, I hit Return if it’s the first in the list, or ⌘ and the number of its place in the list if not. Bam – it executes and I have my link in my clipboard.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastRunningSpotlightScriptCommand-0EA1317A-92B6-4925-9F60-CDDC407DC212.jpg&quot;&gt;&lt;img alt=&quot;Running the Spotlight Site to Cool Site script command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1084&quot; src=&quot;https://scottwillsey.com/_astro/RaycastRunningSpotlightScriptCommand-0EA1317A-92B6-4925-9F60-CDDC407DC212.Bfwnn0eU_Z1jc07w.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is an extremely simple example of a Raycast script command, but it illustrates that you can very easily perform all kinds of scripted actions without having to write a full Raycast extension or without having to open the Finder or terminal, go to a script directory, and running a script manually. Running a command script through Raycast will always be quicker.&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded><summary>Raycast script commands are great for all kinds of scripted tasks, and I&apos;m increasingly using them for tasks related to my website.</summary></item><item><title>Using Git Hooks for Displaying Last Modified Dates</title><link>https://scottwillsey.com/git-pre-commit</link><guid isPermaLink="true">https://scottwillsey.com/git-pre-commit</guid><description>Git hooks are pretty cool. I&apos;m using pre-commit to conditionally update the last modified date on certain pages in my blog. Here&apos;s how I did it.</description><pubDate>Mon, 12 Feb 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not so very long ago, I wrote about using remark and a script called &lt;code&gt;remark-modified-time.mjs&lt;/code&gt; to update a page’s front matter &lt;code&gt;Date&lt;/code&gt; value for &lt;a href=&quot;https://scottwillsey.com/astro-last-modified&quot;&gt;Auto-Generated Last Modified Dates in Astro&lt;/a&gt;. This approach worked pretty well until I moved the content for my &lt;a href=&quot;https://scottwillsey.com/uses/&quot;&gt;/Uses&lt;/a&gt; page out of a markdown file and into a json file. I didn’t want to have to keep modifying essentially an associated empty markdown file to get the last modified date to change.&lt;/p&gt;
&lt;p&gt;What I wanted was a way to see if the json file itself had changed, and then enter THAT date into the &lt;a href=&quot;https://scottwillsey.com/uses/&quot;&gt;/Uses&lt;/a&gt; markdown file front matter. In essence, change one file, and another one gets its updated timestamp. This would give me a self-updating last modified date value for everything and I wouldn’t have to remember to manually change anything to make it happen.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks&quot;&gt;Git Hooks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Git hooks let you run a script when some git action occurs. One git related action that occurs all the time is the git commit. Git commit turns out to be a very good time to look at when files were last modified, since git’s entire job is paying attention to when and how files are modified. The git hook to use if you want it to happen when you perform a git commit is called &lt;code&gt;pre-commit&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Although it’s called &lt;code&gt;pre-commit&lt;/code&gt;, it happens during a commit but before you enter the commit message. It can be used to verify commits before allowing them to happen, but instead I use it to modify files and commit those new changes along with the existing ones.&lt;/p&gt;
&lt;p&gt;Implementing a pre-commit git hook is simple. Go into your project’s &lt;code&gt;.git/hooks&lt;/code&gt; directory and create a file called &lt;code&gt;pre-commit&lt;/code&gt;, with no file extension. There should already be a file in there called &lt;code&gt;pre-commit.sample&lt;/code&gt; – you can either rename it without the extension and edit it, or just create a new one with the correct name.&lt;/p&gt;
&lt;p&gt;Here are the contents of my &lt;code&gt;.git/hooks/pre-commit&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;diff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;--cached&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;--name-status&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-iE&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;^M.*src/(content/links/links\.md|content/now/now\.md|content/pins/pins\.md|data/uses\.json|data/spotlight\.json)$&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;src/data/uses.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;src/content/uses/uses.md&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;src/data/spotlight.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]];&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;src/content/links/links.md&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;filecontent&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$filecontent&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;awk&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-v&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;RS=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;NR==2{print}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;$file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sed&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/---.*/,/---.*/s/^date:.*$/date: &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;TZ&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;America/Los_Angeles&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;+%Y-%m-%dT%H:%M:%S-08:00&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;mv&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;tmp&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;$file&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;$file&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; tmp    mv tmp $file    git add $filedone&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Two points if you noticed that it’s just a bash script and that it clearly is running a git command to see what files have changed since the last commit!&lt;/p&gt;
&lt;p&gt;The output of that command is piped to grep to look to see if any of the modified files are &lt;code&gt;src/content/links/links.md&lt;/code&gt;, &lt;code&gt;src/content/now/now.md&lt;/code&gt;, &lt;code&gt;src/content/pins/pins.md&lt;/code&gt;, &lt;code&gt;src/data/uses.json&lt;/code&gt;, or &lt;code&gt;src/data/spotlight.json&lt;/code&gt;.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Once it finds any modified files that match my list, it uses awk and sed to find the front matter and change the date value to git’s modified timestamp. I leave learning all about awk and sed as an exercise for the reader – see you in about 10 years.&lt;/p&gt;
&lt;p&gt;For the most part, the files that are modified are the files that get their front matter &lt;code&gt;date&lt;/code&gt; value updated, except in the case of the two json files. If &lt;code&gt;src/data/spotlight.json&lt;/code&gt; is modified, &lt;code&gt;src/content/links/links.md&lt;/code&gt; gets its timestamp instead. And if &lt;code&gt;src/data/uses.json&lt;/code&gt; is changed, &lt;code&gt;src/content/uses/uses.md&lt;/code&gt; gets that timestamp in its front matter &lt;code&gt;date&lt;/code&gt; field.&lt;/p&gt;
&lt;p&gt;Another way to look at it is that if any of the markdown files I’m looking for are updated, they get their timestamp set accordingly. In addition, &lt;code&gt;links.md&lt;/code&gt; also gets an updated timestamp if &lt;code&gt;src/data/spotlight.json&lt;/code&gt; is modified. This is because both &lt;code&gt;links.md&lt;/code&gt; and &lt;code&gt;spotlight.json&lt;/code&gt; contain data that shows up on &lt;a href=&quot;https://scottwillsey.com/links/&quot;&gt;Links&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But in the case of my &lt;a href=&quot;https://scottwillsey.com/uses/&quot;&gt;/Uses&lt;/a&gt; page, I never look to see if &lt;code&gt;src/content/uses/uses.md&lt;/code&gt; gets updated. That’s because I’m really only using it for its front matter at this point. All of the data displayed on the page itself comes from &lt;code&gt;src/data/uses.json&lt;/code&gt;. So I only look to see if &lt;code&gt;uses.json&lt;/code&gt; was modified, and if so, I update the timestamp in &lt;code&gt;uses.md&lt;/code&gt;. Then I can use that value to display on the compiled page as the last modified date and time.&lt;/p&gt;
&lt;p&gt;That’s it. It really is that simple to implement git hooks. They’re sitting inside &lt;code&gt;.git/hooks&lt;/code&gt; in your repo just waiting to be used for exciting things like telling people when you added your mouse to the list of computer hardware that you gaze at lovingly on a daily basis.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Spotlight.json is used for the Cool Site Spotlight on my &lt;a href=&quot;https://scottwillsey.com/links/&quot;&gt;Links&lt;/a&gt; page. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Git hooks are pretty cool. I&apos;m using pre-commit to conditionally update the last modified date on certain pages in my blog. Here&apos;s how I did it.</summary></item><item><title>Astro Templates for JSON Data</title><link>https://scottwillsey.com/astro-templates-json</link><guid isPermaLink="true">https://scottwillsey.com/astro-templates-json</guid><description>Using a JSON data file and rendering it in Astro page templates.</description><pubDate>Fri, 02 Feb 2024 08:09:00 GMT</pubDate><content:encoded>&lt;p&gt;Web frameworks like &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; often allow the use of Markdown for blog post “content”, that is, the actual blog post, and then the page design and programming is in a page template which takes the Markdown and renders its contents in the appropriate place for a fully rendered HTML page. This is convenient and allows excellent separation of written words (“content”) and site rendering mechanisms.&lt;/p&gt;
&lt;p&gt;Sometimes, though, what you want to put on the page is more complicated than you can easily do in Markdown. Such is the case with my &lt;a href=&quot;https://scottwillsey.com/uses&quot;&gt;/uses&lt;/a&gt; page on this website.&lt;/p&gt;
&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#background&quot;&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#the-starting-point&quot;&gt;The Starting Point&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#the-modifications&quot;&gt;The Modifications&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#a-json-is-born&quot;&gt;A JSON Is Born&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#an-astro-page-template-gets-smarter&quot;&gt;An Astro Page Template Gets Smarter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#summarium&quot;&gt;Summarium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;p&gt;When I first created my &lt;a href=&quot;https://scottwillsey.com/uses&quot;&gt;/uses&lt;/a&gt; page, I thought I was going to do the same thing I do for my &lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;/links&lt;/a&gt;  and &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;/now&lt;/a&gt; pages… namely, use Markdown for the “data” (please don’t make me say content again) which would go into the Astro &lt;code&gt;&amp;#x3C;Content /&gt;&lt;/code&gt; component to render the Markdown into HTML.&lt;/p&gt;
&lt;p&gt;But…&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;https://grepjason.sh/&quot;&gt;Jason&lt;/a&gt; from &lt;a href=&quot;https://hemisphericviews.com/&quot;&gt;Hemispheric Views&lt;/a&gt; stated rather enthusiastically during a recent episode, Markdown isn’t always the right tool for the job. And it’s NOT the right tool for the /uses job, because I want a format and flexibility for this page that Markdown makes difficult, if not impossible.&lt;/p&gt;
&lt;p&gt;The result is that I created the /now page as an Astro page template with all the “data” (no, I will NOT) thrown in amongst the html tags, just like 1990 calling for its beautiful, manually handwritten pages back. But that’s gross. It’s gross because it’s harder to work with from an adding and editing perspective, and it just seems dumb.&lt;/p&gt;
&lt;p&gt;The solution is very simple, and it’s what I do on Friends with Beer for the drinks. I use a JSON data file and render it in different Astro page templates.&lt;/p&gt;
&lt;h2 id=&quot;the-starting-point&quot;&gt;The Starting Point&lt;/h2&gt;
&lt;p&gt;My original &lt;code&gt;uses.astro&lt;/code&gt; file looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;uses.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;use-header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bigmac&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;mac&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;densities&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;My Computer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Last updated &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;modifieddate&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;remarkPluginFrontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;lastModified&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Computer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;the-thing&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bigmbp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;mbp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;densities&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;2021 M1 Pro Macbook Pro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;2021 14&quot; MacBook Pro M1 Pro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;M1 Pro 10-core CPU, 16-core GPU&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;16GB RAM&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;1TB SSD&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;It might not be THE most amazing computer, spec-wise, but Apple&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Silicon Macs are game changers. It&apos;s quiet, it&apos;s cool, it&apos;s fast, and&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;it&apos;s instant-on. I&apos;ve traditionally hated laptops because of their&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;massive compromises, and this removes them all.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;... a bunch more items ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;article&gt;    &lt;h1&gt;{title}&lt;/h1&gt;    &lt;div class=&quot;&quot;&gt;      &lt;a href=&quot;&quot;&gt;&lt;/a      &gt;      &lt;p class=&quot;&quot;&gt;{description}&lt;/p&gt;        &lt;div class=&quot;&quot;&gt;            &lt;time datetime=&quot;&quot;&gt;        &lt;a href=&quot;&quot;&gt;Last updated {modifieddate(remarkPluginFrontmatter.lastModified)}&lt;/a        &gt;              &lt;div class=&quot;&quot;&gt;      &lt;h2&gt;Computer&lt;/h2&gt;      &lt;div class=&quot;&quot;&gt;        &lt;div class=&quot;&quot;&gt;          &lt;a href=&quot;&quot;&gt;&lt;Image              src={mbp}              width=&amp;#x22;300&amp;#x22;              densities={[2, 3]}              alt=&amp;#x22;2021 M1 Pro Macbook Pro&amp;#x22;            /&gt;&lt;/a          &gt;          &lt;div&gt;            &lt;h3&gt;2021 14&amp;#x22; MacBook Pro M1 Pro&lt;/h3&gt;            &lt;ul&gt;              &lt;li&gt;M1 Pro 10-core CPU, 16-core GPU&lt;/li&gt;              &lt;li&gt;16GB RAM&lt;/li&gt;              &lt;li&gt;1TB SSD&lt;/li&gt;            &lt;/ul&gt;          &lt;/div&gt;                &lt;p class=&quot;&quot;&gt;          It might not be THE most amazing computer, spec-wise, but Apple          Silicon Macs are game changers. It&amp;#x27;s quiet, it&amp;#x27;s cool, it&amp;#x27;s fast, and          it&amp;#x27;s instant-on. I&amp;#x27;ve traditionally hated laptops because of their          massive compromises, and this removes them all.        &lt;/p&gt;       ... a bunch more items ...   &quot;&gt;&lt;div&gt;&lt;/div&gt;
&lt;p&gt;The text that is the whole point of the page, namely the items that I use that I wish to present, are just more stuff in a sea of rendering implementation.&lt;/p&gt;
&lt;p&gt;You can see for yourself how un-fun it would be to add new items to or edit existing ones. It requires carefully trawling through everything and make sure I’m not messing up nested divs and all kinds of junk. Even with VSCode’s code folding and syntax highlighting, it’s still ugly and nightmarish.&lt;/p&gt;
&lt;p&gt;Let’s fix this mess by breaking out the data from the drawing, so to speak.&lt;/p&gt;
&lt;h2 id=&quot;the-modifications&quot;&gt;The Modifications&lt;/h2&gt;
&lt;h3 id=&quot;a-json-is-born&quot;&gt;A JSON Is Born&lt;/h3&gt;
&lt;p&gt;Step 1 is creating a data file for the stuff I use. I’m calling it &lt;code&gt;uses.json&lt;/code&gt;, and I’m putting it in my data folder at &lt;code&gt;src/data/uses.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Step 2 is figuring out the data structure. I break my stuff up into categories or sections, like “Computer” and “Podcast Recording”.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;You can see that in each category, there are multiple items. Each item consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The name of the item,&lt;/li&gt;
&lt;li&gt;Some specs,&lt;/li&gt;
&lt;li&gt;An optional link to a website for the item,&lt;/li&gt;
&lt;li&gt;My thoughts about it, aka a description,&lt;/li&gt;
&lt;li&gt;An image of the item.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Based on that, here’s how I’ll structure my JSON data file.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;uses.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Category&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Computer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;Items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Keychron Q1 Keyboard&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;Specs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;84 key (75%)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;BT and wired&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;QMK for greater customization&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Gateron Pro Brown switches&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;6063 aluminum CNC machined body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://www.keychron.com/products/keychron-q1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;Description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Shhh... no one tell my K2 (see below), but the Keychron Q1 is in a whole other leaque. Wow, built like a TANK, as Jason from Hemispheric Views says. I love the feel of the switches, the sound, the weight, the look, the feel, the everything. I&apos;m not sure I&apos;ll ever use another keyboard again. Also... come on. Look at those shades of blue. It is available in other colors, but why??&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Keychron-Q1-encoder-D633B1F6-73A7-472F-90C9-680982767284&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[    {        &amp;#x22;Category&amp;#x22;: &amp;#x22;Computer&amp;#x22;,        &amp;#x22;Items&amp;#x22;: [            {                &amp;#x22;Name&amp;#x22;: &amp;#x22;Keychron Q1 Keyboard&amp;#x22;,                &amp;#x22;Specs&amp;#x22;: [                    &amp;#x22;84 key (75%)&amp;#x22;,                    &amp;#x22;BT and wired&amp;#x22;,                    &amp;#x22;QMK for greater customization&amp;#x22;,                    &amp;#x22;Gateron Pro Brown switches&amp;#x22;,                    &amp;#x22;6063 aluminum CNC machined body&amp;#x22;                ],                &amp;#x22;Link&amp;#x22;: &amp;#x22;https://www.keychron.com/products/keychron-q1&amp;#x22;,                &amp;#x22;Description&amp;#x22;: &amp;#x22;Shhh... no one tell my K2 (see below), but the Keychron Q1 is in a whole other leaque. Wow, built like a TANK, as Jason from Hemispheric Views says. I love the feel of the switches, the sound, the weight, the look, the feel, the everything. I&amp;#x27;m not sure I&amp;#x27;ll ever use another keyboard again. Also... come on. Look at those shades of blue. It is available in other colors, but why??&amp;#x22;,                &amp;#x22;Image&amp;#x22;: &amp;#x22;Keychron-Q1-encoder-D633B1F6-73A7-472F-90C9-680982767284&amp;#x22;            }        ]    }]&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This lets me have multiple categories, each with multiple items, each with the item data listed above.&lt;/p&gt;
&lt;p&gt;Then I just have to modify my &lt;code&gt;uses.astro&lt;/code&gt; page template to read it in and map it out to the template I’m using for the “data” section.&lt;/p&gt;
&lt;h3 id=&quot;an-astro-page-template-gets-smarter&quot;&gt;An Astro Page Template Gets Smarter&lt;/h3&gt;
&lt;p&gt;I lied just a little bit. I &lt;em&gt;am&lt;/em&gt; going to modify &lt;code&gt;uses.astro&lt;/code&gt; to parse the JSON data from &lt;code&gt;uses.json&lt;/code&gt;, but I’m also going to create an Astro component called &lt;code&gt;UsesItem.astro&lt;/code&gt; that will be used to render the individual items. So &lt;code&gt;uses.astro&lt;/code&gt; is going to load the JSON file, map through the categories, and every time it hits a list of items, it’s going to hand the rendering for them over to the &lt;code&gt;UsesItem.astro&lt;/code&gt; component.&lt;/p&gt;
&lt;p&gt;This will break it things up, make re-use easier if I ever want to render any of these items elsewhere, and generally make me happier. And I like being happier.&lt;/p&gt;
&lt;p&gt;Here’s what the /uses page template, &lt;code&gt;uses.astro&lt;/code&gt;, looks like now with this approach:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;uses.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getEntry&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:assets&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;UsesItem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/UsesItem.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;modifieddate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;usesdata&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../data/uses.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mac&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../assets/images/posts/macsetup-7780B721-09D1-44CC-82B1-E083D8F4A7C9.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;bigmac&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/posts/macsetup-7780B721-09D1-44CC-82B1-E083D8F4A7C9.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getEntry&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;use-header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bigmac&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;mac&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;densities&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;My Computer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Last updated &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;modifieddate&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;usesdata&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Category&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;UsesItem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;use-header&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-direction&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;row&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;column-gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-content&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;align-items&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-style&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;italic&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;use-header&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface-menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;use-header&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;min-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;225&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;uses&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface-menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;item&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;only&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;screen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#D30000;--2:#6CB6FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;699&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;use-header&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-direction&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;column&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;uses&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;time&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;time&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;time&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-top&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.05&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;article&gt;    &lt;h1&gt;{title}&lt;/h1&gt;    &lt;div class=&quot;&quot;&gt;      &lt;a href=&quot;&quot;&gt;&lt;/a      &gt;      &lt;p class=&quot;&quot;&gt;{description}&lt;/p&gt;        &lt;div class=&quot;&quot;&gt;            &lt;time datetime=&quot;&quot;&gt;        &lt;a href=&quot;&quot;&gt;Last updated {modifieddate(uses.data.date)}&lt;/a        &gt;              {      usesdata.map((use) =&gt; {        return (          &lt;div class=&quot;&quot;&gt;            &lt;h2&gt;{use.Category}&lt;/h2&gt;            {use.Items.map((item) =&gt; (                          ))}          &lt;/div&gt;        );      })    }  &quot;&gt;&lt;div&gt;&lt;/div&gt;
&lt;p&gt;All the information, or data, or content, about the items is GONE from the html template. It’s all in the JSON file, and &lt;code&gt;uses.astro&lt;/code&gt; is just a set of display instructions.&lt;/p&gt;
&lt;p&gt;Now the only part that’s hard-coded into the page template is the page introduction area indicated by the rectangle marker below, which is right at the beginning of the &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; section.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/UsesTemplate1-E07B61D0-26E3-46ED-9ADB-64F2740B5DA1.jpg&quot;&gt;&lt;img alt=&quot;Uses page header section&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1054&quot; src=&quot;https://scottwillsey.com/_astro/UsesTemplate1-E07B61D0-26E3-46ED-9ADB-64F2740B5DA1.D9hPI4LJ_ZlK9ne.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Everything following it comes from the JSON file and is mapped out in this section:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;usesdata&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Category&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;UsesItem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {      return (          &lt;div class=&quot;&quot;&gt;          &lt;h2&gt;{use.Category}&lt;/h2&gt;          {use.Items.map((item) =&gt; (                     ))}          &lt;/div&gt;        ); })}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Very little of the work of rendering the items is done in &lt;code&gt;uses.astro&lt;/code&gt;. Instead, it relies on the &lt;code&gt;UsesItem&lt;/code&gt; component which it imports from &lt;code&gt;UsesItem.astro&lt;/code&gt;. The current item in the map loop is passed as a prop to the component, which then renders the item detail view. Here’s my &lt;code&gt;UsesItem.astro&lt;/code&gt; component in its entirety, and half of it is CSS:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;UsesItem.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:assets&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;the-thing&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/posts/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.jpeg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../assets/images/posts/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.jpeg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;densities&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Specs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;spec&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;spec&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Description&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;fluent:globe-star-20-regular&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;the-thing&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-direction&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;row&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;column-gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-content&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex-start&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;align-items&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex-start&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-style&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;normal&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;column-gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;uses&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-style&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;italic&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-top&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.15&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;item&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;only&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;screen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#D30000;--2:#6CB6FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;699&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;the-thing&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-direction&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;column&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;div class=&quot;&quot;&gt;    &lt;a href=&quot;&quot;&gt;      &lt;Image        src={import(&amp;#x60;../assets/images/posts/${item.Image}.jpeg&amp;#x60;)}        width=&amp;#x22;300&amp;#x22;        densities={[2, 3]}        alt={item.Name}      /&gt;    &lt;/a&gt;    &lt;div&gt;      &lt;h3&gt;{item.Name}&lt;/h3&gt;      &lt;ul&gt;        {item.Specs.map((spec, index) =&gt; &lt;li key=&quot;&quot;&gt;{spec}&lt;/li&gt;)}      &lt;/ul&gt;    &lt;/div&gt;  &lt;/div&gt;  &lt;p class=&quot;&quot;&gt;    {item.Description}  &lt;/p&gt;  {    item.Link &amp;#x26;&amp;#x26; (      &lt;p class=&quot;&quot;&gt;        &lt;a href=&quot;&quot;&gt;                  &lt;/a&gt;        &lt;a href=&quot;&quot;&gt;{item.Link}&lt;/a&gt;      &lt;/p&gt;    )  }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This uses the &lt;a href=&quot;https://docs.astro.build/en/guides/images/#image--astroassets&quot;&gt;astro:assets Image component&lt;/a&gt; to optimize the item’s image as specified in &lt;code&gt;uses.json&lt;/code&gt;. It puts this next to the item name and a list of item features of specs. Under that is my description of what it is or why I like it, followed by an optional link to a website for the item.&lt;/p&gt;
&lt;p&gt;You can see that &lt;code&gt;item.Specs&lt;/code&gt; is an array and so I use &lt;code&gt;item.Specs.map&lt;/code&gt; to create the list of specs. Also notice where the item URL link is rendered starts with &lt;code&gt;item.Link &amp;#x26;&amp;#x26;&lt;/code&gt; which means the following href rendering only happens if &lt;code&gt;item.Link&lt;/code&gt; indeed exists.&lt;/p&gt;
&lt;p&gt;The end result that is rendered is something like the following:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/UsesKeychronQ1-730DE8A6-538A-4582-850B-C2765FF58127.jpg&quot;&gt;&lt;img alt=&quot;Keychron Q1 item view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;918&quot; src=&quot;https://scottwillsey.com/_astro/UsesKeychronQ1-730DE8A6-538A-4582-850B-C2765FF58127.Vgp2BanV_dXvB2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;summarium&quot;&gt;Summarium&lt;/h2&gt;
&lt;p&gt;You can definitely use Markdown for site content when appropriate, such as for a standard blog post. For anything more complicated, though, you’ll want to use a data source, like a JSON file, and a page template to parse it and map it. This way your data, or “content”, is separate from the rendering mechanics, but can be laid out on the page more intricately than is possible with a straight Markdown to HTML rendering.&lt;/p&gt;
&lt;p&gt;The good news is that Astro page templates and components are super flexible in terms of easily mixing HTML, CSS, and JavaScript, and they’re the right tool to use for a one-off page with a custom layout.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;That’s all I have right now because instead of adding things I use, I’m busy rewriting how the page is created. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;/a&gt;&lt;/time&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;&lt;/article&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/time&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;&lt;/article&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded><summary>Using a JSON data file and rendering it in Astro page templates.</summary></item><item><title>Mac 40</title><link>https://scottwillsey.com/mac-40</link><guid isPermaLink="true">https://scottwillsey.com/mac-40</guid><description>I don’t know if you’ve heard, but the Mac turned 40. And what a glorious 40 it is.</description><pubDate>Thu, 25 Jan 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I don’t know if you’ve heard, but the Mac turned 40. And what a glorious 40 it is – with Apple Silicon and the return to some amount of function over form in the laptops and (most of the) desktops, the Mac is better than ever.&lt;/p&gt;
&lt;p&gt;Personally, I started early on the Mac. My dad bought us matching 128K Macs the first year they came out. My Mac was upgraded to Fat Mac and then Mac Plus, and it served me far longer than it had any right to. By the time I got a current at the time PC at a discount from my employer, my Mac was way past its useful lifespan.&lt;/p&gt;
&lt;p&gt;People have been telling a lot of fun stories about the Mac for its 40th anniversary. I &lt;em&gt;highly&lt;/em&gt; encourage you listen to &lt;a href=&quot;https://www.relay.fm/upgrade/496&quot;&gt;Upgrade #496: 40th Anniversary of the Mac Draft&lt;/a&gt; even if you’re not an Upgrade listener. Yes, it’s a draft, yes, John Siracusa actually drafts the current Mac Pro as the worst Mac ever, and yes, it is glorious. There’s also this &lt;a href=&quot;https://siracusasays.com/episodes/42/&quot;&gt;peak Siracusa moment&lt;/a&gt;…&lt;/p&gt;
&lt;p&gt;Here’s a list of some articles, podcast episodes, and videos I’ve enjoyed this week.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.wired.com/story/plaintext-apple-secret-40-year-old-mac-still-rules/&quot;&gt;Apple Shares the Secret of Why the 40-Year-Old Mac Still Rules | WIRED&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://sixcolors.com/post/2024/01/mac-40-a-quick-qa-with-greg-joswiak/&quot;&gt;Greg Joswiak on the Mac’s enduring appeal – Six Colors&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mac40th.com/&quot;&gt;Happy 40th Birthday, Macintosh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=QBbBf894_f0&quot;&gt;Lost Apple History… FOUND on a Floppy Disk! &lt;span role=&quot;img&quot; aria-label=&quot;floppy disk&quot;&gt;💾&lt;/span&gt; Macintosh 40th Birthday Surprise (1984-2024) - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://sixcolors.com/post/2024/01/mac-at-40-the-eras-tour/&quot;&gt;Mac at 40: The eras tour – Six Colors&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.fastcompany.com/91013403/40-years-later-the-original-mac-is-more-amazing-than-ever&quot;&gt;The Mac that Steve Jobs unveiled in 1984 is 40, and as amazing as ever&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.theverge.com/24048479/apple-mac-40-anniversary&quot;&gt;The Mac turns 40 — and keeps on moving - The Verge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://arstechnica.com/gadgets/2024/01/macintosh-at-40-the-oddest-and-rarest-macs-ever-built/&quot;&gt;Wild Apples: The 12 weirdest and rarest Macs ever made | Ars Technica&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.relay.fm/upgrade/496&quot;&gt;Upgrade #496: 40th Anniversary of the Mac Draft - Relay FM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=eNebqs-oPUg&quot;&gt;Upgrade 496: 40th Anniversary of the Mac Draft - YouTube&lt;/a&gt;&lt;/p&gt;</content:encoded><summary>I don’t know if you’ve heard, but the Mac turned 40. And what a glorious 40 it is.</summary></item><item><title>Links and Pins</title><link>https://scottwillsey.com/links-and-pins</link><guid isPermaLink="true">https://scottwillsey.com/links-and-pins</guid><description>I changed Links to be what it always should have been, and added Pins to be what Links was.</description><pubDate>Mon, 15 Jan 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not long ago, I created a &lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;Links&lt;/a&gt; page which I used to hold links I wanted to keep temporarily, like a little pinboard. But then I realized “HEY!! THIS IS BAD!!” People expect a links page to be things like blogrolls and stuff they might like, not the stupid stuff Scott Willsey wants to remember for a day or month or year or three.&lt;/p&gt;
&lt;p&gt;So as of today, I now have &lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;Links&lt;/a&gt;, which is what people expect of a links page, and &lt;a href=&quot;https://scottwillsey.com/pins&quot;&gt;Pins&lt;/a&gt;, which is what I apparently expect of a links page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;Links&lt;/a&gt; is now, just to clarify, a permanent-ish list of links to things that YOU, the reader, might also find interesting.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/pins&quot;&gt;Pins&lt;/a&gt; is, just to also clarify, where I’ll stick ephemeral stuff that I want to get back to but doesn’t make sense to stick in a read later app.&lt;/p&gt;</content:encoded><summary>I changed Links to be what it always should have been, and added Pins to be what Links was.</summary></item><item><title>Astro Icon 1.x Upgrade</title><link>https://scottwillsey.com/astro-icon-v1</link><guid isPermaLink="true">https://scottwillsey.com/astro-icon-v1</guid><description>Upgrading to Astro Icon 1.x from older versions.</description><pubDate>Sun, 14 Jan 2024 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you started using Nate More’s &lt;a href=&quot;https://www.astroicon.dev&quot;&gt;Astro Icon&lt;/a&gt; with Astro early on and are using a version lower than 1.0, you will be in for a surprise when you upgrade to the latest version of Astro Icon and suddenly find a lot of breaking errors related to it.&lt;/p&gt;
&lt;p&gt;Migrating from 0.x to 1.x is simple but can be a little tedious depending on how many icons you’re using. A couple key things to understand are that you have to import packages for each icon set that you use now, and that this is now an Astro integration. Don’t worry if you’re not sure how that affects you. You’ll handle adjusting to those changes in the upgrade steps below.&lt;/p&gt;
&lt;p&gt;By the way, Nate has a great upgrade guide already at &lt;a href=&quot;https://www.astroicon.dev/guides/upgrade/v1/&quot;&gt;Upgrade to Astro Icon v1 | Astro Icon&lt;/a&gt;. I just thought I’d write about it too, since I’ve done this on a couple different sites now and I still have a couple to go.&lt;/p&gt;
&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#upgrading-to-astro-icon-1x-from-0x&quot;&gt;Upgrading to Astro Icon 1.x from 0.x&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#1-upgrade-to-the-latest-astro-and-astro-icon-versions&quot;&gt;1. Upgrade to the latest Astro and Astro Icon versions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-import-and-integrate-astro-icon-in-your-astroconfigmjs&quot;&gt;2. Import and integrate astro-icon in your astro.config.mjs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-install-iconify-jsonicon-family-for-every-icon-package-you-use&quot;&gt;3. Install @iconify-json/icon-family for every icon package you use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-change-your-astro-icon-import-statements-on-astro-pages&quot;&gt;4. Change your astro-icon import statements on Astro pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-change-all-references-to-astro-icon-in-your-css-to-data-icon&quot;&gt;5. Change all references to [astro-icon] in your CSS to [data-icon]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-use-font-size-instead-of-width-or-height-to-set-the-icon-sizes&quot;&gt;6. Use font-size instead of width or height to set the icon sizes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-tweak-font-size-on-all-css-for-your-icons&quot;&gt;7. Tweak font-size on all CSS for your icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#summarium&quot;&gt;Summarium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;upgrading-to-astro-icon-1x-from-0x&quot;&gt;Upgrading to Astro Icon 1.x from 0.x&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade to the latest version packages of astro and astro-icon (astro-icon &gt;= 1.0)&lt;/li&gt;
&lt;li&gt;Import and integrate astro-icon in your astro.config.mjs&lt;/li&gt;
&lt;li&gt;Install @iconify-json/icon-family for every icon package you use&lt;/li&gt;
&lt;li&gt;On every page you import astro-icons, change &lt;code&gt;import { Icon } from &quot;astro-icon&quot;;&lt;/code&gt; to &lt;code&gt;import { Icon } from &quot;astro-icon/components&quot;;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Find and replace [astro-icon] tags with [data-icon] in your css&lt;/li&gt;
&lt;li&gt;Find and replace any CSS width or height properties on [data-icon] entries and replace with font-size&lt;/li&gt;
&lt;li&gt;Now go through every single instance of [data-icon] in your CSS and tweak the font-size that you just added.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;1-upgrade-to-the-latest-astro-and-astro-icon-versions&quot;&gt;1. Upgrade to the latest Astro and Astro Icon versions&lt;/h2&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Songoku:friendswithbrews&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;astro-icon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;✗&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;4h31m&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;△&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;⍉&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;ncu&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Checking&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Users/scott/Sites/friendswithbrews/package.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;====================&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; 21/21 100%&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;@astrojs/rss&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^4.0.1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^4.0.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;@astrojs/sitemap&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^3.0.3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^3.0.4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;astro&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^4.0.7&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^4.1.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;astro-eslint-parser&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.16.0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.16.1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#664f20;--2:#f69f53&quot;&gt;astro-icon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.8.2&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^1.0.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;astro-pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^1.3.0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^1.4.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;date-fns&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^3.0.6&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^3.2.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;prettier&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^3.1.1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^3.2.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;prettier-plugin-astro&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.12.2&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.12.3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;sharp&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.33.1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;^0.33.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Run&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ncu&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-u&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;upgrade&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;package.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@Songoku:friendswithbrews astro-icon ✗ 4h31m △ ⍉ ➜ncuChecking /Users/scott/Sites/friendswithbrews/package.json[====================] 21/21 100% @astrojs/rss            ^4.0.1  →   ^4.0.2 @astrojs/sitemap        ^3.0.3  →   ^3.0.4 astro                   ^4.0.7  →   ^4.1.2 astro-eslint-parser    ^0.16.0  →  ^0.16.1 astro-icon              ^0.8.2  →   ^1.0.2 astro-pagefind          ^1.3.0  →   ^1.4.0 date-fns                ^3.0.6  →   ^3.2.0 prettier                ^3.1.1  →   ^3.2.2 prettier-plugin-astro  ^0.12.2  →  ^0.12.3 sharp                  ^0.33.1  →  ^0.33.2Run ncu -u to upgrade package.json&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I use &lt;a href=&quot;https://www.npmjs.com/package/npm-check-updates&quot;&gt;npm-check-updates&lt;/a&gt; to update npm packages, but you can do it the standard way.  The key thing to note is that in this instance I’m upgrading from astro-icon 0.8.2 to 1.0.2.&lt;/p&gt;
&lt;h2 id=&quot;2-import-and-integrate-astro-icon-in-your-astroconfigmjs&quot;&gt;2. Import and integrate astro-icon in your astro.config.mjs&lt;/h2&gt;
&lt;p&gt;No explanation needed here – import astro-icon and add to the list of integrations.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;astro.config.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;defineConfig&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro/config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-pagefind&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/sitemap&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// https://astro.build/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;defineConfig&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://friendswithbeer.com/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F69D50&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;integrations&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [ &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f69f53&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import { defineConfig } from &amp;#x22;astro/config&amp;#x22;;import icon from &amp;#x22;astro-icon&amp;#x22;;import pagefind from &amp;#x22;astro-pagefind&amp;#x22;;import sitemap from &amp;#x22;@astrojs/sitemap&amp;#x22;;// https://astro.build/configexport default defineConfig({  site: &amp;#x22;https://friendswithbeer.com/&amp;#x22;,  integrations: [ icon(), pagefind(), sitemap(),],});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;3-install-iconify-jsonicon-family-for-every-icon-package-you-use&quot;&gt;3. Install @iconify-json/icon-family for every icon package you use&lt;/h2&gt;
&lt;p&gt;This one requires you to scour through every place you specify an icon package name. Search for &lt;code&gt;[astro-icon&lt;/code&gt; in your project and look for instances of things like &lt;code&gt;&amp;#x3C;Icon name=&quot;simple-icons:mastodon&quot; /&gt;&lt;/code&gt; or CSS instances like &lt;code&gt;[astro-icon=&quot;bi:hand-thumbs-up-fill&quot;]&lt;/code&gt; and take note of the package names (in these examples, &lt;strong&gt;simple-icons&lt;/strong&gt; and &lt;strong&gt;bi&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Now install these by installing &lt;code&gt;@iconify-json/package-name&lt;/code&gt; for each. E.g,&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;install&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;@iconify-json/simple-icons&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;@iconify-json/bi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;npm install @iconify-json/simple-icons @iconify-json/bi&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That will install the two packages in my example above.&lt;/p&gt;
&lt;h2 id=&quot;4-change-your-astro-icon-import-statements-on-astro-pages&quot;&gt;4. Change your astro-icon import statements on Astro pages&lt;/h2&gt;
&lt;p&gt;The old way to import astro-icons in your .astro files is&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;import &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; from &quot;astro-icon&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import { Icon } from &amp;#x22;astro-icon&amp;#x22;;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Change all instances of this in your astro files to&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;import &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; from &quot;astro-icon/components&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import { Icon } from &amp;#x22;astro-icon/components&amp;#x22;;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;5-change-all-references-to-astro-icon-in-your-css-to-data-icon&quot;&gt;5. Change all references to [astro-icon] in your CSS to [data-icon]&lt;/h2&gt;
&lt;p&gt;Another search and replace activity – &lt;code&gt;[astro-icon]&lt;/code&gt; references have been replaced with &lt;code&gt;[data-icon]&lt;/code&gt; references.&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#ab0000;--2:#71b8ff&quot;&gt;astro-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;simple-icons:mastodon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--color-five&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2.2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  [astro-icon=&amp;#x22;simple-icons:mastodon&amp;#x22;] {    color: var(--color-five);    width: 2.2rem;  }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#ab0000;--2:#71b8ff&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;simple-icons:mastodon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--color-five&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2.2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  [data-icon=&amp;#x22;simple-icons:mastodon&amp;#x22;] {    color: var(--color-five);    font-size: 2.2rem;  }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;6-use-font-size-instead-of-width-or-height-to-set-the-icon-sizes&quot;&gt;6. Use font-size instead of width or height to set the icon sizes&lt;/h2&gt;
&lt;p&gt;You may have noticed in the previous section that I not only changed &lt;code&gt;[astro-icon]&lt;/code&gt; to &lt;code&gt;[data-icon]&lt;/code&gt; in my CSS reference to it, but I also removed the &lt;code&gt;width&lt;/code&gt; property and replaced it with a &lt;code&gt;font-size&lt;/code&gt; property instead.&lt;/p&gt;
&lt;p&gt;After performing the first 5 steps, you’ll see wildly sized icons all over the place until you do this.&lt;/p&gt;
&lt;h2 id=&quot;7-tweak-font-size-on-all-css-for-your-icons&quot;&gt;7. Tweak font-size on all CSS for your icons&lt;/h2&gt;
&lt;p&gt;Step 6 will get you in the ballpark, but you’ll now find that some of your sizes, while closer, are still off. Just play with font-size values until you get what you like. CSS specificity is key here – be specific about which icons you’re setting your CSS for and use scoped CSS by putting them in &lt;code&gt;&amp;#x3C;style&gt;&lt;/code&gt; tags in specific astro pages.&lt;/p&gt;
&lt;p&gt;The first example below affects all icons, the second one affects the &lt;code&gt;bi:hand-thumbs-up-fill&lt;/code&gt; icon specifically.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[data-icon] &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#f89a93&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[data-icon] { font-size: 1em;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[data-icon=&quot;bi:hand-thumbs-up-fill&quot;] &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#f89a93&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;bottom&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[data-icon=&amp;#x22;bi:hand-thumbs-up-fill&amp;#x22;] { margin-bottom: 0.1rem;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;summarium&quot;&gt;Summarium&lt;/h2&gt;
&lt;p&gt;That’s pretty much it. Once change you will notice when running the dev server is that the first time you try to load the site in the browser, Astro Icon has to load all the icon sets and it takes a little bit. Don’t worry. It will work. &lt;span role=&quot;img&quot; aria-label=&quot;slightly smiling face&quot;&gt;🙂&lt;/span&gt;&lt;/p&gt;</content:encoded><summary>Upgrading to Astro Icon 1.x from older versions.</summary></item><item><title>Grin and Bear It</title><link>https://scottwillsey.com/grin-and-bear-it</link><guid isPermaLink="true">https://scottwillsey.com/grin-and-bear-it</guid><description>Rethinking how I write blog posts on the Mac.</description><pubDate>Sun, 07 Jan 2024 08:13:36 GMT</pubDate><content:encoded>&lt;p&gt;Back when the iPad Pro was my main mobile “work” device,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;a href=&quot;https://getdrafts.com&quot;&gt;Drafts&lt;/a&gt; played a huge role in my writing and blogging. For one thing, it has extensive automation and scripting capabilities, and those came in super handy on iPadOS. I created automations to let me choose photos from my photos library and add them to blog posts, including creating proper links and adding them to my site repo.&lt;/p&gt;
&lt;p&gt;But now I have an Apple Silicon MacBook Pro and I’ve long since given up trying to fight my way to success through all the limitations of iPadOS. It’s hard to overstate how much faster and easier so many things are on the Mac, and given the current state of Apple’s Shortcuts, having tons of other reliable methods of automating things, as you do on the Mac, is incredibly nice.&lt;/p&gt;
&lt;p&gt;All that to say, I realized today I haven’t really done anything in Drafts except type out blog posts and then paste them into VSCode when it was time to publish them. I’m no longer making use of all the great Drafts automations and integrations that I used to. And given THAT fact, I may as well do my writing in something that looks nicer and feels more modern as a writing app.&lt;/p&gt;
&lt;p&gt;I own &lt;a href=&quot;https://ia.net/writer&quot;&gt;iA Writer&lt;/a&gt; but it bugs me in certain ways. I don’t like the non-standard footnote default that makes you manually type the footnote reference at the bottom yourself if you don’t want an inline footnote, and it’s also very limited on font choices.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ulysses.app&quot;&gt;Ulysses&lt;/a&gt; is also weird. It shows you some of the Markdown but tries to hide other Markdown, like URLs, in very inconvenient ways. It’s been a long time since I thought I was a fan of Ulysses.&lt;/p&gt;
&lt;p&gt;Before Ulysses, it was &lt;a href=&quot;https://www.bywordapp.com&quot;&gt;Byword&lt;/a&gt; for me. To say it looks a little basic now is a bit of an understatement.&lt;/p&gt;
&lt;p&gt;That leaves &lt;a href=&quot;https://bear.app&quot;&gt;Bear&lt;/a&gt; as the only realistic Markdown writing option for me, and I have to say, I like how the editor looks. That’s important to me. If it wasn’t, I’d still be using Drafts because it’s a great app and I do really like Greg Pierce and the work he does on it. It’s just not as important to me on the Mac now as it was on iPadOS.&lt;/p&gt;
&lt;p&gt;I’m a person who has a lot of idiosyncrasies, and one of them is that I need a nice looking editor to be able to enjoy the writing process. Bear definitely looks nice. The defaults are nice, customizing it is simple, and things like images and links look really nice in it.&lt;/p&gt;
&lt;p&gt;Below is an image showing both the light and dark themes I’m currently using in Bear.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BearLightAndDarkThemes-B3E5EF91-274E-4913-92C8-72B9B789A76A.jpg&quot;&gt;&lt;img alt=&quot;My Bear dark and light themes&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1150&quot; src=&quot;https://scottwillsey.com/_astro/BearLightAndDarkThemes-B3E5EF91-274E-4913-92C8-72B9B789A76A.iQuVcU1W_1JmfTQ.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There’s not a lot I need to do in order to incorporate Bear into my writing workflow. I already have a script that names my images and puts copies of them in the right locations to both be optimized for the blog and to be able to link to the original. I’ll need to put an automation somewhere in the publish chain that updates the post’s Markdown file with those image paths and creates the links to the larger, original images. But that was also something I needed to do for my Drafts workflow, and hadn’t yet.&lt;/p&gt;
&lt;p&gt;Also I think playing with Bear has given me some ideas for improving my site CSS a bit… &lt;span role=&quot;img&quot; aria-label=&quot;thinking face&quot;&gt;🤔&lt;/span&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Not my WORK work device, but my personal project work device &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Rethinking how I write blog posts on the Mac.</summary></item><item><title>Auto-Generated Last Modified Date in Astro</title><link>https://scottwillsey.com/astro-last-modified</link><guid isPermaLink="true">https://scottwillsey.com/astro-last-modified</guid><description>If you have a page that you want to show the last modified date on, Astro and remark can do it for you automatically.</description><pubDate>Sat, 06 Jan 2024 22:49:58 GMT</pubDate><content:encoded>&lt;p&gt;I’m trying to figure out how to use remark plugins in &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; to modify a couple things in posts for me automatically, and along the way I’ve used remark to add a couple quality of life improvements. The first is an auto-generated table of contents for longer posts that I feel need one, and the second is an auto-generated last modified date for pages based on git commit timestamps.&lt;/p&gt;
&lt;p&gt;The benefit of an automatically generated last modified date is that I don’t have to remember to update it when I make changes to a page that displays it, like my &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;now&lt;/a&gt; page or my &lt;a href=&quot;https://scottwillsey.com/links&quot;&gt;links&lt;/a&gt; page. I can just commit my changes and the last modified date will update automatically. It’s simple, but it’s kind of beautiful.&lt;/p&gt;
&lt;p&gt;I basically did exactly what Astro’s documentation says to do in a helpful recipe called &lt;a href=&quot;https://docs.astro.build/en/recipes/modified-time/&quot;&gt;Add last modified time&lt;/a&gt;. I created a file called remark-modified-time.mjs and put it in my src/components/utilities folder.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;remark-modified-time.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;execSync&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;child_process&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;remarkModifiedTime&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;history&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;result&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;execSync&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;git log -1 --pretty=&quot;format:%cI&quot; &quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;lastModified&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;result&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;toString&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;import { execSync } from &amp;#x22;child_process&amp;#x22;;export function remarkModifiedTime() {  return function (tree, file) {    const filepath = file.history[0];    const result = execSync(&amp;#x60;git log -1 --pretty=&amp;#x22;format:%cI&amp;#x22; &amp;#x22;${filepath}&amp;#x22;&amp;#x60;);    file.data.astro.frontmatter.lastModified = result.toString();  };}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Then I updated my astro.config.mjs file to reference this as a remark plugin, and to use it in my markdown processing.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;astro.config.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;defineConfig&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro/config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;expressiveCode&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-expressive-code&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-pagefind&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;remarkModifiedTime&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./src/components/utilities/remark-modified-time.mjs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;remarkToc&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;remark-toc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;/** &lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--0fs:italic&quot;&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#227188;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--0fs:italic&quot;&gt;import(&apos;astro-expressive-code&apos;).AstroExpressiveCodeOptions&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt; */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;astroExpressiveCodeOptions&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Example: Change the themes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;themes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;material-theme-ocean&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light-plus&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;github-dark-dimmed&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;themeCssSelector&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;[data-theme=&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&apos;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// https://astro.build/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#F69D50&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;defineConfig&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://scottwillsey.com/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F69D50&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;integrations&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;expressiveCode&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;astroExpressiveCodeOptions&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;()]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F69D50&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;markdown&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;remarkPlugins&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [ &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;remarkModifiedTime&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;remarkToc&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#001080;--2:#ADBAC7&quot;&gt;heading&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#001080;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;contents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; ] ]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F69D50&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#F69D50&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; &amp;#x60;[data-theme=&amp;#x27;${theme.name}&amp;#x27;]&amp;#x60;,}// https://astro.build/configexport default defineConfig({    site: &amp;#x22;https://scottwillsey.com/&amp;#x22;,    integrations: [expressiveCode(astroExpressiveCodeOptions), icon(), pagefind()],    markdown: {    remarkPlugins: [ remarkModifiedTime, [remarkToc, { heading: &amp;#x22;contents&amp;#x22; } ] ],  },});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Once those are set up, it’s just a matter of referencing remarkPluginFrontMatter.lastModified in the Astro template.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;now.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getEntry&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;modifieddate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getEntry&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;remarkPluginFrontmatter&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;The &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://nownownow.com/about&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;&quot;now page&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; concept comes from&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;an idea by &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://sive.rs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Derek Sivers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; to have people communicate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;what they&apos;re focused on &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; at this point in their lives.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Last updated &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#f89a93&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;modifieddate&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;remarkPluginFrontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;lastModified&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#f89a93&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;article&gt;    &lt;h1&gt;{title}&lt;/h1&gt;    &lt;p class=&quot;&quot;&gt;      The &lt;a href=&quot;&quot;&gt;&amp;#x22;now page&amp;#x22;&lt;/a&gt; concept comes from      an idea by &lt;a href=&quot;&quot;&gt;Derek Sivers&lt;/a&gt; to have people communicate      what they&amp;#x27;re focused on &lt;b&gt;now&lt;/b&gt; at this point in their lives.    &lt;/p&gt;    &lt;div class=&quot;&quot;&gt;            &lt;time datetime=&quot;&quot;&gt;        &lt;a href=&quot;&quot;&gt;Last updated {modifieddate(remarkPluginFrontmatter.lastModified)}&lt;/a        &gt;              &lt;div class=&quot;&quot;&gt;          &lt;/div&gt;  &quot;&gt;&lt;div&gt;&lt;/div&gt;
&lt;p&gt;That’s it. Now I have auto-generated last modified dates for any page I feel needs one, thanks to Astro using remark to render markdown and therefore making adding remark plugins super simple.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/LastUpdatedRemark-35161379-7B49-4BBB-88C0-09240426173A.jpg&quot;&gt;&lt;img alt=&quot;Last updated indicator&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;630&quot; src=&quot;https://scottwillsey.com/_astro/LastUpdatedRemark-35161379-7B49-4BBB-88C0-09240426173A.4W_s6wKf_1koBlu.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;You can put your remark plugin anywhere you want, as long as you reference the path correctly in astro.config.mjs. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;&lt;/a&gt;&lt;/time&gt;&lt;/div&gt;&lt;/article&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded><summary>If you have a page that you want to show the last modified date on, Astro and remark can do it for you automatically.</summary></item><item><title>Now Page</title><link>https://scottwillsey.com/now-page</link><guid isPermaLink="true">https://scottwillsey.com/now-page</guid><description>It&apos;s a now page - it&apos;s what I&apos;m doing now.</description><pubDate>Thu, 04 Jan 2024 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I don’t remember how I stumbled across the &lt;a href=&quot;https://nownownow.com/about&quot;&gt;now page&lt;/a&gt; movement started by &lt;a href=&quot;https://sive.rs/&quot;&gt;Derek Sivers&lt;/a&gt;, but I immediately thought “what a great idea!” and decided to add one to my site.&lt;/p&gt;
&lt;p&gt;The concept is simple – it’s a page that lists some current interests, activities, or projects that you’re into or doing. I decided to title mine “&lt;a href=&quot;https://scottwillsey.com/now/&quot;&gt;Current and Recent Things&lt;/a&gt;” because it seemed more appropriate when talking about food I’ve recently enjoyed or movies I’ve recently watched to label those as “recent” instead of “right this second”.&lt;/p&gt;
&lt;p&gt;This is the kind of thing I like about personal websites. I think I a lot of people are realizing that blogging isn’t dead yet, it’s not even &lt;a href=&quot;https://genius.com/Monty-python-parrot-oh-not-again-annotated&quot;&gt;just resting&lt;/a&gt;, and additions to personal sites like now pages make personal blogs and websites even more fun to maintain.&lt;/p&gt;
&lt;p&gt;You should try it, if you’re not already.&lt;/p&gt;
&lt;p&gt;Anyway… here it is. &lt;a href=&quot;https://scottwillsey.com/now&quot;&gt;My now page&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>It&apos;s a now page - it&apos;s what I&apos;m doing now.</summary></item><item><title>Default Browser Switching</title><link>https://scottwillsey.com/default-browser</link><guid isPermaLink="true">https://scottwillsey.com/default-browser</guid><description>Sometimes it&apos;s nice to have apps automatically open links in a different browser, which is why the ability to quickly change default browsers is handy.</description><pubDate>Fri, 29 Dec 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you saw from my &lt;a href=&quot;https://scottwillsey.com/default-apps-2023/&quot;&gt;Default Apps December 2023&lt;/a&gt; post, I use Safari for personal use and Chrome for web work and for some administrative and server-related tools that work best in it. The downside to this is that links go to the default browser from things like 1Password, Fastmarks, and email messages, for example. This means when I’m using Chrome, what I really need is for it to be my default browser, and the rest of the time, Safari to be.&lt;/p&gt;
&lt;p&gt;Because I’m a &lt;a href=&quot;https://www.raycast.com/&quot;&gt;Raycast&lt;/a&gt; user, I was intrigued by the &lt;a href=&quot;https://github.com/raycast/script-commands/tree/master&quot;&gt;Raycast Script Commands GitHub repo&lt;/a&gt;. The script command examples in this repo include &lt;a href=&quot;https://github.com/raycast/script-commands/tree/master/commands/system&quot;&gt;system commands&lt;/a&gt; that include default browser scripts for Arc, Chrome, Chromium, Firefox, and Safari.&lt;/p&gt;
&lt;h2 id=&quot;raycast-script-commands&quot;&gt;Raycast Script Commands&lt;/h2&gt;
&lt;p&gt;Raycast script commands are basically scripts that are registered in Raycast and have hooks that let it interact with them to pass parameters and show output in Raycast, if desired. These can be Bash scripts, AppleScript, Swift, Python, Ruby, or Node.js scripts.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastCreateScriptCommand-F9B0DF82-4E67-4FB3-AC44-4ADDBB2DDF46.jpeg&quot;&gt;&lt;img alt=&quot;Raycast Create Script Command menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1170&quot; src=&quot;https://scottwillsey.com/_astro/RaycastCreateScriptCommand-F9B0DF82-4E67-4FB3-AC44-4ADDBB2DDF46.SorBMJVC_8eEWT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;raycast-default-browser-script-commands&quot;&gt;Raycast Default Browser Script Commands&lt;/h2&gt;
&lt;p&gt;The default browser scripts in the Raycast script command repo rely on a very short Objective-C program that you compile on your Mac called &lt;a href=&quot;https://github.com/kerma/defaultbrowser&quot;&gt;&lt;code&gt;defaultbrowser&lt;/code&gt;&lt;/a&gt;, which lets you change your default browser from the command line. Given this, you might be surprised to learn that these script commands are AppleScript, and not Bash scripts. The reason is simple: buttons.&lt;/p&gt;
&lt;p&gt;When you tell your Mac to switch default browsers using &lt;code&gt;defaultbrowser&lt;/code&gt;, you are presented with a dialog box giving you the option to set whatever browser you wanted as your new default, or to keep whatever browser is the current default. Bash scripts can’t click buttons, but AppleScript can. It can also run Bash scripts, which lets us call &lt;code&gt;defaultbrowser&lt;/code&gt; from within the AppleScript.&lt;/p&gt;
&lt;p&gt;Here’s the &lt;code&gt;default-browser-safari.applescript&lt;/code&gt; script from the Raycast script commands repo:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;AppleScript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;#!/usr/bin/osascript&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Install via Homebrew: `brew install defaultbrowser`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.title Default to Safari&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.mode silent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.packageName Browser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.icon images/safari.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.author Marcos Sánchez-Dehesa&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.authorURL https://github.com/dehesa&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.description Set Safari as the default browser.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set repeatCount to 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;tell application &quot;System Events&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;my changeDefaultBrowser(&quot;safari&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;repeat until button 2 of window 1 of process &quot;CoreServicesUIAgent&quot; exists&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;delay 0.01&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set repeatCount to repeatCount + 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if repeatCount = 15 then exit repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;click button 2 of window 1 of process &quot;CoreServicesUIAgent&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;Safari is now your default browser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on error&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;Safari is already your default browser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on error&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;The \&quot;defaultbrowser\&quot; CLI tool is required: https://github.com/kerma/defaultbrowser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/usr/bin/osascript# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser)# Install via Homebrew: &amp;#x60;brew install defaultbrowser&amp;#x60;# Required parameters:# @raycast.schemaVersion 1# @raycast.title Default to Safari# @raycast.mode silent# @raycast.packageName Browser# Optional parameters:# @raycast.icon images/safari.png# Documentation:# @raycast.author Marcos Sánchez-Dehesa# @raycast.authorURL https://github.com/dehesa# @raycast.description Set Safari as the default browser.set repeatCount to 0tell application &amp;#x22;System Events&amp;#x22; try  my changeDefaultBrowser(&amp;#x22;safari&amp;#x22;)  repeat until button 2 of window 1 of process &amp;#x22;CoreServicesUIAgent&amp;#x22; exists   delay 0.01   set repeatCount to repeatCount + 1   if repeatCount = 15 then exit repeat  end repeat  try   click button 2 of window 1 of process &amp;#x22;CoreServicesUIAgent&amp;#x22;   log &amp;#x22;Safari is now your default browser&amp;#x22;  on error   log &amp;#x22;Safari is already your default browser&amp;#x22;  end try on error  log &amp;#x22;The \&amp;#x22;defaultbrowser\&amp;#x22; CLI tool is required: https://github.com/kerma/defaultbrowser&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The top half is information for Raycast. Then the AppleScript portion gets going. First it calls a function&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; that runs the &lt;code&gt;defaultbrowser&lt;/code&gt; command line program with the string &lt;code&gt;safari&lt;/code&gt; as a parameter value. Then it runs a loop waiting for the confirmation dialog box to pop up. It waits until either the window exists or it’s looped 15 times. Finally, it tries to click button 2 of the dialog box. The reason it tries to click button 2 is because the dialog looks like the following image – or at least, it’s supposed to. More on that later.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/DefaultBrowserSwitchToChromeDialog-AA19A58F-FDE4-48B3-9BEA-3B33737D5081.jpg&quot;&gt;&lt;img alt=&quot;Default browser change confirmation dialog box&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1866&quot; src=&quot;https://scottwillsey.com/_astro/DefaultBrowserSwitchToChromeDialog-AA19A58F-FDE4-48B3-9BEA-3B33737D5081.CWV11bNg_Z190YtL.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This means when you send it a request to change your default browser from Safari to Chrome, for example, you’ll get a dialog box with two buttons, the first of which cancels the change and the second of which executes the change to Chrome.&lt;/p&gt;
&lt;p&gt;I created new Raycast script commands using the appropriately named “Create Script Command” command in Raycast, and then copied the AppleScripts from the repo into them. Hooray! End of blog post, right?&lt;/p&gt;
&lt;p&gt;Except there was a problem.&lt;/p&gt;
&lt;h2 id=&quot;chrome-does-it-differently&quot;&gt;Chrome Does It Differently&lt;/h2&gt;
&lt;p&gt;Everything worked great whenever I tried switching from any browser that wasn’t Chrome to any other browser. But whenever I tried switching FROM Chrome back to something else, it never worked.&lt;/p&gt;
&lt;p&gt;A simple test using &lt;code&gt;defaultbrowser&lt;/code&gt; directly in the command line showed me why. Chrome’s confirmation dialog box is different. It looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/DefaultBrowserSwitchFROMChromeDialog-97582602-7500-42FA-8558-557BA479147E.jpeg&quot;&gt;&lt;img alt=&quot;Dialog box when switching from Chrome to a different default browser&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1950&quot; src=&quot;https://scottwillsey.com/_astro/DefaultBrowserSwitchFROMChromeDialog-97582602-7500-42FA-8558-557BA479147E.CEHaErij_1OUSrK.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You see the problem. The command scripts assume that button 2 is the button for making the switch, but in the case of Chrome’s dialog box, it’s the other way around. Button 1 makes the change and button 2 keeps the current default browser setting.&lt;/p&gt;
&lt;p&gt;I honestly don’t know whose responsibility this is, Google’s or Apple’s, and I don’t really care. I presume it’s Google’s because I presume at one point the Raycast versions of these script commands worked, even when switching away from Chrome as the default browser, so my guess is Google changed something about Chrome’s confirmation dialog. I don’t know. Honestly, I would have thought this was entirely handled by macOS.&lt;/p&gt;
&lt;h2 id=&quot;modifying-the-default-browser-scripts-to-handle-the-chrome-dialog-box&quot;&gt;Modifying the Default Browser Scripts to Handle the Chrome Dialog Box&lt;/h2&gt;
&lt;p&gt;The solution is simple: if switching from Chrome, click button 1. Otherwise, click button 2. Since the script could be switching to a non-Chrome browser from a different non-Chrome browser, this means I need to check. And that sent me down a rabbit hole that I refuse to admit the time duration of, because it was long enough to need to add an “s” to “hour”.&lt;/p&gt;
&lt;p&gt;But it goes like this:&lt;/p&gt;
&lt;p&gt;On macOS, your default browser setting is one of many settings saved in &lt;code&gt;com.apple.launchservices.secure.plist&lt;/code&gt; in your local Library/Prefences folder (&lt;code&gt;~/Library/Preferences&lt;/code&gt;). You can search for it. If you type the following, you’ll get a LONG output that includes two lines you care about:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;plutil&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-p&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;plutil -p ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Those two lines are:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;&quot;LSHandlerRoleAll&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;com.apple.safari&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;&quot;LSHandlerURLScheme&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; &amp;#x22;com.apple.safari&amp;#x22;&amp;#x22;LSHandlerURLScheme&amp;#x22; =&gt; &amp;#x22;https&amp;#x22;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s if Safari is your current default browser, of course. It could be org.mozilla.firefox or com.google.chrome, for example. But you want to search for a line with &lt;code&gt;LSHandlerRoleAll&lt;/code&gt; set to some browser, followed by a line called &lt;code&gt;LSHandlerURLScheme&lt;/code&gt; set to &lt;code&gt;https&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Fortunately, &lt;a href=&quot;https://opensource.com/article/20/9/awk-ebook&quot;&gt;awk&lt;/a&gt; was made for things like this, and also fortunately, AppleScript can run shell commands. So I made another function for my default browser AppleScripts to see what the current browser is.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;AppleScript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;to getCurrentDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set filePath to &quot;~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set output to do shell script &quot;plutil -p &quot; &amp;#x26; filePath &amp;#x26; &quot; | awk &apos;/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\&quot;\\\&quot;https\\\&quot;\&quot;) print a}&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;return output&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end getCurrentDefaultBrowser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;to getCurrentDefaultBrowser() set filePath to &amp;#x22;~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist&amp;#x22; set output to do shell script &amp;#x22;plutil -p &amp;#x22; &amp;#x26; filePath &amp;#x26; &amp;#x22; | awk &amp;#x27;/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\&amp;#x22;\\\&amp;#x22;https\\\&amp;#x22;\&amp;#x22;) print a}&amp;#x27;&amp;#x22; return outputend getCurrentDefaultBrowser&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now, before running the part of the script that runs &lt;code&gt;defaultbrowser&lt;/code&gt; before waiting for a button to click, it checks which browser is the current default browser. If it’s com.google.chrome, then my script clicks button 1 for me. Otherwise it clicks button 2.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;AppleScript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;#!/usr/bin/osascript&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Install via Homebrew: `brew install defaultbrowser`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.title Set Default Safari&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.mode silent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.packageName Browser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.icon images/safari.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set currentDefaultBrowser to my getCurrentDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set repeatCount to 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;tell application &quot;System Events&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;my changeDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;repeat until button 2 of window 1 of process &quot;CoreServicesUIAgent&quot; exists&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;delay 0.01&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set repeatCount to repeatCount + 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if repeatCount = 15 then exit repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if currentDefaultBrowser contains &quot;com.google.chrome&quot; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;click button 1 of window 1 of process &quot;CoreServicesUIAgent&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;click button 2 of window 1 of process &quot;CoreServicesUIAgent&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end if&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;Safari is now your default browser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on error&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;Safari is already your default browser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on error&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;The \&quot;defaultbrowser\&quot; CLI tool is required: https://github.com/kerma/defaultbrowser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;to getCurrentDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set filePath to &quot;~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set output to do shell script &quot;plutil -p &quot; &amp;#x26; filePath &amp;#x26; &quot; | awk &apos;/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\&quot;\\\&quot;https\\\&quot;\&quot;) print a}&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;return output&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end getCurrentDefaultBrowser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;to changeDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;do shell script &quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if ! command -v defaultbrowser &amp;#x26;&gt; /dev/null; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;exit 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;defaultbrowser &quot; &amp;#x26; &quot;safari&quot; &amp;#x26; &quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;exit 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end changeDefaultBrowser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; /dev/null; then  exit 1 fi defaultbrowser &amp;#x22; &amp;#x26; &amp;#x22;safari&amp;#x22; &amp;#x26; &amp;#x22; exit 0 &amp;#x22;end changeDefaultBrowser&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now when I have Chrome set as my default browser and I don’t want that anymore, my Raycast default browser command scripts work as intended, and will actually manage to set my default browser to the desired one.&lt;/p&gt;
&lt;h2 id=&quot;a-parameterized-version-of-the-default-browser-command-script&quot;&gt;A Parameterized Version of the Default Browser Command Script&lt;/h2&gt;
&lt;p&gt;Just in case anyone else cares, I also created a parameterized version of the script that lets me type in the browser name as a raycast command parameter so that the same script can switch to any browser I want.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ParameterizedDefaultBrowserScriptCommand-4707113A-7D69-40A2-8AED-37C94DFA8D56.jpeg&quot;&gt;&lt;img alt=&quot;Parameterized default browser script command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1170&quot; src=&quot;https://scottwillsey.com/_astro/ParameterizedDefaultBrowserScriptCommand-4707113A-7D69-40A2-8AED-37C94DFA8D56.DPicw9pT_Zy6YhJ.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;AppleScript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;#!/usr/bin/osascript&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Required parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.schemaVersion 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.title Set Default Browser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.mode silent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Optional parameters:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.icon images/Safari.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.argument1 { &quot;type&quot;: &quot;text&quot;, &quot;placeholder&quot;: &quot;Browser Name&quot; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# Documentation:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.author scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# @raycast.authorURL https://raycast.com/scott_willsey&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on run argv&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;# check for null or empty item 1 of argv&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if (item 1 of argv) is &quot;&quot; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;You must enter a browser name.&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set currentDefaultBrowser to my getCurrentDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set browserName to item 1 of argv&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set repeatCount to 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;tell application &quot;System Events&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;my changeDefaultBrowser(browserName)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;repeat until button 2 of window 1 of process &quot;CoreServicesUIAgent&quot; exists&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;delay 0.01&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set repeatCount to repeatCount + 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if repeatCount = 15 then exit repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if currentDefaultBrowser contains &quot;com.google.chrome&quot; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;click button 1 of window 1 of process &quot;CoreServicesUIAgent&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;click button 2 of window 1 of process &quot;CoreServicesUIAgent&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end if&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log browserName &amp;#x26; &quot; is now your default browser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on error&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log browserName &amp;#x26; &quot; is already your default browser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;on error&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;log &quot;The \&quot;defaultbrowser\&quot; CLI tool is required: https://github.com/kerma/defaultbrowser&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end try&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end if&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end run&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;to getCurrentDefaultBrowser()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set filePath to &quot;~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;set output to do shell script &quot;plutil -p &quot; &amp;#x26; filePath &amp;#x26; &quot; | awk &apos;/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\&quot;\\\&quot;https\\\&quot;\&quot;) print a}&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;return output&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end getCurrentDefaultBrowser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;to changeDefaultBrowser(browserName)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;do shell script &quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;if ! command -v /opt/homebrew/bin/defaultbrowser &amp;#x26;&gt; /dev/null; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;exit 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;defaultbrowser &quot; &amp;#x26; browserName &amp;#x26; &quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;exit 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;end changeDefaultBrowser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; /dev/null; then    exit 1  fi  defaultbrowser &amp;#x22; &amp;#x26; browserName &amp;#x26; &amp;#x22;  exit 0 &amp;#x22;end changeDefaultBrowser&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Custom handler in AppleScript parlance, apparently &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Sometimes it&apos;s nice to have apps automatically open links in a different browser, which is why the ability to quickly change default browsers is handy.</summary></item><item><title>Default Apps December 2023</title><link>https://scottwillsey.com/default-apps-2023</link><guid isPermaLink="true">https://scottwillsey.com/default-apps-2023</guid><description>My 2023 entrant in Robb Knight&apos;s App Defaults, inspired by Hemispheric Views 097 Duel of the Defaults.</description><pubDate>Sun, 24 Dec 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Once upon a time,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; the &lt;a href=&quot;https://hemisphericviews.com&quot;&gt;Hemispheric Views podcast&lt;/a&gt; held the first ever &lt;a href=&quot;https://listen.hemisphericviews.com/097&quot;&gt;Duel of the Defaults&lt;/a&gt; in which they decided who was the winner at using the most default apps for several categories. Subsequently, &lt;a href=&quot;https://gabz.blog/2023/11/03/my-defaults.html&quot;&gt;Gabz posted his own default app list&lt;/a&gt;, and then &lt;a href=&quot;https://rknight.me&quot;&gt;Robb Knight&lt;/a&gt; took it to 11 with his &lt;a href=&quot;https://defaults.rknight.me&quot;&gt;App Defaults&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;In the spirit of this new fashion of blogging about one’s default apps, here are mine as of December, 2023.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; &lt;em&gt;These are my personal use apps. They have nothing to do with my job at Monolith 3000, which is an all-Microsoft shop.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;official-categories&quot;&gt;Official Categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;postbox&quot;&gt;📮&lt;/span&gt; Mail Server
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fastmail.com&quot;&gt;Fastmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mail.google.com/&quot;&gt;Gmail&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;incoming envelope&quot;&gt;📨&lt;/span&gt; Mail Client
&lt;ul&gt;
&lt;li&gt;Apple Mail&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;memo&quot;&gt;📝&lt;/span&gt; Notes
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://obsidian.md&quot;&gt;Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Notes&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://getdrafts.com&quot;&gt;Drafts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raycast.com&quot;&gt;Raycast&lt;/a&gt; Floating Notes Window&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;white heavy check mark&quot;&gt;✅&lt;/span&gt; To-Do
&lt;ul&gt;
&lt;li&gt;Reminders App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;camera&quot;&gt;📷&lt;/span&gt; iPhone Photo Shooting
&lt;ul&gt;
&lt;li&gt;iOS Camera&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🟦&lt;/span&gt; Photo Management
&lt;ul&gt;
&lt;li&gt;Photos App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;calendar&quot;&gt;📅&lt;/span&gt; Calendar
&lt;ul&gt;
&lt;li&gt;Apple Calendar&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;open file folder&quot;&gt;📂&lt;/span&gt; Cloud File Storage
&lt;ul&gt;
&lt;li&gt;iCloud Drive&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;open book&quot;&gt;📖&lt;/span&gt; RSS
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://netnewswire.com&quot;&gt;NetNewsWire&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;👩‍🦲&lt;/span&gt; Contacts
&lt;ul&gt;
&lt;li&gt;Apple Contacts App&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;globe with meridians&quot;&gt;🌐&lt;/span&gt; Browser
&lt;ul&gt;
&lt;li&gt;Safari, Chrome for web work&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;speech balloon&quot;&gt;💬&lt;/span&gt; Chat
&lt;ul&gt;
&lt;li&gt;Messages, Signal, Discord, Slack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bookmark&quot;&gt;🔖&lt;/span&gt; Bookmarks
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://retina.studio/fastmarks/&quot;&gt;Fastmarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bookmark tabs&quot;&gt;📑&lt;/span&gt; Read It Later
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://goodlinks.app&quot;&gt;GoodLinks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;scroll&quot;&gt;📜&lt;/span&gt; Word Processing
&lt;ul&gt;
&lt;li&gt;Pages&lt;/li&gt;
&lt;li&gt;Google Docs&lt;/li&gt;
&lt;li&gt;Microsoft Word&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;chart increasing&quot;&gt;📈&lt;/span&gt; Spreadsheets
&lt;ul&gt;
&lt;li&gt;Excel &lt;em&gt;(I’m sorry, but Numbers is the most useless excuse for a spreadsheet app I’ve ever seen)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;bar chart&quot;&gt;📊&lt;/span&gt; Presentations
&lt;ul&gt;
&lt;li&gt;Keynote&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;shopping cart&quot;&gt;🛒&lt;/span&gt; Shopping List
&lt;ul&gt;
&lt;li&gt;Reminders&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;fork and knife&quot;&gt;🍴&lt;/span&gt; Meal Planning
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mela.recipes&quot;&gt;Mela&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;money bag&quot;&gt;💰&lt;/span&gt; Budgeting and Personal Finance
&lt;ul&gt;
&lt;li&gt;Spreadsheet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;newspaper&quot;&gt;📰&lt;/span&gt; News
&lt;ul&gt;
&lt;li&gt;RSS&lt;/li&gt;
&lt;li&gt;Mastodon&lt;/li&gt;
&lt;li&gt;Apple News&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;musical note&quot;&gt;🎵&lt;/span&gt; Music
&lt;ul&gt;
&lt;li&gt;Apple Music&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;microphone&quot;&gt;🎤&lt;/span&gt; Podcasts
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://overcast.fm&quot;&gt;Overcast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;locked with key&quot;&gt;🔐&lt;/span&gt; Password Management
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://1password.com&quot;&gt;1Password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keychain&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;additional-categories&quot;&gt;Additional Categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🧑&lt;/span&gt;‍&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; Programming
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.barebones.com/products/bbedit/&quot;&gt;BBEdit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Xcode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;laptop computer&quot;&gt;💻&lt;/span&gt; Terminal
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.warp.dev&quot;&gt;Warp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;camera with flash&quot;&gt;📸&lt;/span&gt; Photo Editing
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://affinity.serif.com/en-us/photo/&quot;&gt;Affinity Photo 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flyingmeat.com/acorn/&quot;&gt;Acorn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;large blue diamond&quot;&gt;🔷&lt;/span&gt; Vector Graphics
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://affinity.serif.com/en-us/designer/&quot;&gt;Affinity Designer 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🧠&lt;/span&gt; AI
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/blog/chatgpt-plus&quot;&gt;ChatGPT Plus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raycast.com/pro&quot;&gt;Raycast AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;November 2nd, 2023, in fact &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>My 2023 entrant in Robb Knight&apos;s App Defaults, inspired by Hemispheric Views 097 Duel of the Defaults.</summary></item><item><title>Warp Blocks</title><link>https://scottwillsey.com/warp-blocks</link><guid isPermaLink="true">https://scottwillsey.com/warp-blocks</guid><description>Warp is a modern, macOS convention-friendly terminal. One of its nicer features is Blocks, which allow for deeper work on command output.</description><pubDate>Mon, 11 Dec 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I like &lt;a href=&quot;https://www.warp.dev&quot;&gt;Warp&lt;/a&gt;. I did not intend to like Warp. I didn’t even &lt;strong&gt;want&lt;/strong&gt; to like Warp. But after giving it a fair shot for a few days, I couldn’t help but liking it and sticking with it. It just feels to me like everything a next generation terminal should be.&lt;/p&gt;
&lt;p&gt;According to its developers,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software faster.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That sounds nice, if not a bit vague. What is so &lt;em&gt;great&lt;/em&gt; about Warp, and what makes it more desirable to use than macOS Terminal app or &lt;a href=&quot;https://iterm2.com/&quot;&gt;iTerm2&lt;/a&gt; or Secure Shellfish, for example? The obvious answer is its features and the workflows they enable. One of my favorite of those features is Blocks.&lt;/p&gt;
&lt;h2 id=&quot;blocks&quot;&gt;Blocks&lt;/h2&gt;
&lt;p&gt;Blocks are one of the biggest Warp features, in my opinion, and one that I love and take advantage of all the time. Blocks are simply a grouping of a command and its output into one selectable and actionable section in Warp. For example, here’s the result of a &lt;code&gt;ps -aux&lt;/code&gt; command that is now a block.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/WarpBlockPsAux-C7EFDD59-1EA9-4EB0-A746-87BB0CC2FA56.jpeg&quot;&gt;&lt;img alt=&quot;Warp Block for a process list command&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1012&quot; src=&quot;https://scottwillsey.com/_astro/WarpBlockPsAux-C7EFDD59-1EA9-4EB0-A746-87BB0CC2FA56.B51tAPC-_20yLem.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My new waiting command prompt is below the block and is now in a separate block from it, but I can scroll up and down to see the whole &lt;code&gt;ps -aux&lt;/code&gt; block and perform actions on it. Blocks are nice because not only do they negate having to use something like &lt;code&gt;ps -aux | more&lt;/code&gt; to see the full output of a command, but they also remain selectable, filterable, and modifiable.&lt;/p&gt;
&lt;p&gt;Speaking of filterable… here’s that same block filtered by the word “python”. Look how small it is… down from 124 lines of output to 3!&lt;/p&gt;
&lt;p&gt;Filtering can accept regular expressions or case-sensitive text simply by choosing those options in the filter search, just like most modern text editors. The keyboard shortcut for filtering is Shift-Option-F (⇧ ⌥ F).&lt;/p&gt;
&lt;p&gt;You may be thinking, hang on… I can just pipe the command to grep like this: &lt;code&gt;ps -aux | grep &apos;python&apos;&lt;/code&gt;,  and you’re right. You can. But filtering is fast and you can further act on it by saving the filtered output or the filtered output and the command, and more.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/WarpBlockCopyFilteredOutput-2FA2853E-F9CD-4EB8-AED1-DE4CF08F2E46.jpeg&quot;&gt;&lt;img alt=&quot;Saving the filtered output of a Block&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;446&quot; src=&quot;https://scottwillsey.com/_astro/WarpBlockCopyFilteredOutput-2FA2853E-F9CD-4EB8-AED1-DE4CF08F2E46.D9YTSA11_Zefd7L.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;update&quot;&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt; &lt;em&gt;2023-12-17&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Warp has a great blog post about Block filtering vs. grep that help answer the obvious question of why use block filtering instead of just using grep: &lt;a href=&quot;https://www.warp.dev/blog/new-utilities-for-your-terminal-inspired-by-text-editors&quot;&gt;New utilities for your terminal, inspired by text editors | Warp&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Bookmarking blocks is nice too. For example, here I left the previous &lt;code&gt;ps -aux&lt;/code&gt; block filtered for “python” and bookmarked it. I then executed a bunch of other commands which all created their own blocks and the bookmarked &lt;code&gt;ps -aux&lt;/code&gt; block scrolled off the screen. But by hitting Option-up (⌥-↑), I immediately jumped back up to the bookmarked (and still filtered) block.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/WarpPreviousBookmark-484685FD-0A74-4860-9C7C-8DED0F545944.jpeg&quot;&gt;&lt;img alt=&quot;Jumping to a bookmarked Block&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1012&quot; src=&quot;https://scottwillsey.com/_astro/WarpPreviousBookmark-484685FD-0A74-4860-9C7C-8DED0F545944.CY8xt08__Z1ewaNO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Filtering isn’t the only way to find things in a block, you can also use standard old Command-F (⌘-F) to search within a block. The difference between this and filtering is exactly what the words imply: filtering reduces the output of the command to just lines with matches, while search finds search text or regular expression matches in the command output, but doesn’t filter to only show matching lines.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/WarpBlockSearch-9D08D851-86FD-471D-80E4-A94848EA3829.jpeg&quot;&gt;&lt;img alt=&quot;Searching in a Block&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1012&quot; src=&quot;https://scottwillsey.com/_astro/WarpBlockSearch-9D08D851-86FD-471D-80E4-A94848EA3829.BoNnsB1V_M8tmO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One nice feature is using search in a “live” block, like one that’s running an &lt;code&gt;htop&lt;/code&gt; or a &lt;code&gt;tail -f&lt;/code&gt; command. As the output of the running process updates, so do your search results.&lt;/p&gt;
&lt;p&gt;There’s more to &lt;a href=&quot;https://docs.warp.dev/features/blocks&quot;&gt;Warp Blocks&lt;/a&gt; than what I’ve mentioned here. Check out &lt;a href=&quot;https://docs.warp.dev/features/blocks&quot;&gt;Warp’s documentation on Blocks&lt;/a&gt; to see for yourself.&lt;/p&gt;</content:encoded><summary>Warp is a modern, macOS convention-friendly terminal. One of its nicer features is Blocks, which allow for deeper work on command output.</summary></item><item><title>Astro 3.3 Picture Component</title><link>https://scottwillsey.com/astro-3-3-picture-component</link><guid isPermaLink="true">https://scottwillsey.com/astro-3-3-picture-component</guid><description>Astro 3.3 dramatically improves the Astro image optimization story once again.</description><pubDate>Sun, 12 Nov 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://scottwillsey.com/astro-3-responsive-images/&quot;&gt;last time I wrote about image optimization and responsive images in Astro&lt;/a&gt;, there were some compromises to be made in order to use &lt;a href=&quot;https://docs.astro.build/en/guides/images/#images-in-astro-files&quot;&gt;astro:assets image optimization&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First, it did not resize images or create responsive source sets, it only optimized the format and file byte size with the same width and height. Second, it did and still does require importing images in a way that at the very least requires you to know the file extension of the original, and in a way that I thought made dynamically creating image source file names impossible. And finally, there was no control at all over how images referenced in markdown are optimized.&lt;/p&gt;
&lt;p&gt;The good news is that as of &lt;a href=&quot;https://astro.build/blog/astro-330/&quot;&gt;Astro 3.3&lt;/a&gt;, there is an improved astro:assets Image component as well as a new astro:assets Picture component that solve a lot of my problems. The issue of leaving it up to Astro to do what it wants with markdown images still exists, but I have a compromise for that issue.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; In the meantime, Astro 3.3+ can now create multiple image formats, multiple image pixel sizes, and can create both img and picture tags with source sets for great image responsiveness.&lt;/p&gt;
&lt;h2 id=&quot;a-problem-requiring-responsive-images-and-dynamic-image-names&quot;&gt;A Problem Requiring Responsive Images and Dynamic Image Names&lt;/h2&gt;
&lt;p&gt;Let’s look at a real world use case to show you a typical scenario where you need to create your image source file names dynamically as well as create multiple sizes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://friendswithbrews.com/&quot;&gt;Friends with Brews&lt;/a&gt; is a podcast about conversations and different kinds of brewed drinks – beer, coffee, or tea. Because part of the show’s premise is trying new drinks and giving them a thumbs-up or thumbs-down, I also want to keep a list of these drinks and showcase them both on the individual episodes they’re consumed on as well as on an aggregate brews page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/TheBrews-DEEBDE29-AA09-4BE1-89C7-2F3A37F9952A.jpg&quot;&gt;&lt;img alt=&quot;Friends with Brews brew list page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;956&quot; src=&quot;https://scottwillsey.com/_astro/TheBrews-DEEBDE29-AA09-4BE1-89C7-2F3A37F9952A.B4eud6b__16MRaT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Each of these little detail blocks links to a details page for the specific drink.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BottlePage-5B3808E1-4745-4345-8A39-4A5C9CCA40E0.jpg&quot;&gt;&lt;img alt=&quot;Drink details page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1204&quot; src=&quot;https://scottwillsey.com/_astro/BottlePage-5B3808E1-4745-4345-8A39-4A5C9CCA40E0.DTA3RJrL_1jVCi5.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Because several of these images are typically displayed on any given page, or because the image on the individual drink detail pages are dimensionally larger, I want them optimized as much as possible. In addition, I want them to be as responsive as possible for different size screens and different &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-3/&quot;&gt;pixel densities&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One thing to note is that all of the drink details for every drink are kept in a JSON file called brews.json. This JSON file includes the name of the image associated with the drink. The JSON entry for a specific brew looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;YodfV6yTeB75PJpmQDPgU&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Oktoberfest Märzen&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Hacker-Pschorr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;HackerPschorrOktoberfestMarzen-8E6221D0-7EB7-46B3-8AFA-5CA4A1E6AC1B&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;As it was forbidden to brew in summer, a stronger beer -- the Märzen -- was brewed earlier in March. It would finally be served at the Oktoberfest, under the &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Heaven of Bavaria.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#F5776E&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt; We have returned once again to the age-old recipe and recreated that gloriously smooth, honey-coloured piece of history from times gone by. Perfect with: Bavarian sausage salad and all the titbits a true Bavarian would also enjoy: roast chicken, sausages or suckling pig cooked in Wiesn beer.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;sortOrder&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;54&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://www.hacker-pschorr.com/our-beers/usa/oktoberfest-maerzen&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;rating&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;host&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Peter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;vote&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;thumbs-up&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;It is malty, it is toasty, and it is crisp. Very happy, this is good.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{    &amp;#x22;id&amp;#x22;: &amp;#x22;YodfV6yTeB75PJpmQDPgU&amp;#x22;,    &amp;#x22;name&amp;#x22;: &amp;#x22;Oktoberfest Märzen&amp;#x22;,    &amp;#x22;brewery&amp;#x22;: &amp;#x22;Hacker-Pschorr&amp;#x22;,    &amp;#x22;image&amp;#x22;: &amp;#x22;HackerPschorrOktoberfestMarzen-8E6221D0-7EB7-46B3-8AFA-5CA4A1E6AC1B&amp;#x22;,    &amp;#x22;description&amp;#x22;: &amp;#x22;As it was forbidden to brew in summer, a stronger beer -- the Märzen -- was brewed earlier in March. It would finally be served at the Oktoberfest, under the \&amp;#x22;Heaven of Bavaria.\&amp;#x22; We have returned once again to the age-old recipe and recreated that gloriously smooth, honey-coloured piece of history from times gone by. Perfect with: Bavarian sausage salad and all the titbits a true Bavarian would also enjoy: roast chicken, sausages or suckling pig cooked in Wiesn beer.&amp;#x22;,    &amp;#x22;type&amp;#x22;: &amp;#x22;beer&amp;#x22;,    &amp;#x22;sortOrder&amp;#x22;: &amp;#x22;0&amp;#x22;,    &amp;#x22;episodes&amp;#x22;: [&amp;#x22;54&amp;#x22;],    &amp;#x22;url&amp;#x22;: &amp;#x22;https://www.hacker-pschorr.com/our-beers/usa/oktoberfest-maerzen&amp;#x22;,    &amp;#x22;rating&amp;#x22;: [      {        &amp;#x22;host&amp;#x22;: &amp;#x22;Peter&amp;#x22;,        &amp;#x22;vote&amp;#x22;: &amp;#x22;thumbs-up&amp;#x22;,        &amp;#x22;description&amp;#x22;: &amp;#x22;It is malty, it is toasty, and it is crisp. Very happy, this is good.&amp;#x22;      }    ]  },&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Note the image entry: the image name doesn’t have a file extension for technical reasons, namely that when you’re importing images in an Astro file, you can’t create a dynamic file name including the file extension. Vite has to know the file extension ahead of time, even if you do cobble together the rest of the file name at compile time.&lt;/p&gt;
&lt;p&gt;Because of this, I just made all my images PNG, regardless of what they would later be optimized to by the various image optimization components I’ve used over the life of the Friends with Brews website, and therefore I also didn’t include the file extension because I would be hard-coding it into the image name string to keep Vite happy.&lt;/p&gt;
&lt;p&gt;It sounds more confusing than it is. Here’s my code pre-Astro 3.0, back when Astro had an image optimization tool called @astrojs/image which had both Image and Picture components. Note the src property of the Picture component and the above paragraph will make more sense.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Picture&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/image/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brew-image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/bottle/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/brews/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aspectRatio&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1:1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;200px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;div class=&quot;&quot;&gt;    &lt;a href=&quot;&quot;&gt;      &lt;Picture        src={&amp;#x60;/images/brews/${brew.image}.png&amp;#x60;}        widths={[400, 800, 1200]}        aspectRatio=&amp;#x22;1:1&amp;#x22;        sizes=&amp;#x22;200px&amp;#x22;        formats={[&amp;#x22;avif&amp;#x22;, &amp;#x22;webp&amp;#x22;, &amp;#x22;png&amp;#x22;]}        alt={&amp;#x60;${brew.brewery} ${brew.name}&amp;#x60;}      /&gt;    &lt;/a&gt;  &lt;/div&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;astro-30---32x-solution&quot;&gt;Astro 3.0 - 3.2.x Solution&lt;/h2&gt;
&lt;p&gt;After migrating to Astro 3 and before Astro 3.3 gave the ability to generate multiple widths for each desired image format, I was generating those myself. For my brew images, I was creating 400 pixel wide and 1000 pixel wide images for each drink in addition to the original size. This was all automated with &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt;, but it was still a little more work and management on my part.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FwBRetrobatchOriginal-86FC47FD-4C37-4DD3-A324-7B701A6BAF26.jpg&quot;&gt;&lt;img alt=&quot;Retrobatch automated image generation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1144&quot; src=&quot;https://scottwillsey.com/_astro/FwBRetrobatchOriginal-86FC47FD-4C37-4DD3-A324-7B701A6BAF26.C5PzRx3i_Z1xuaxw.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In my case, I would generate the 400 and 1000 pixel wide images in webp, and also keep the full-sized png on hand to link to for people who like staring at large images with equally impressive download times.&lt;/p&gt;
&lt;p&gt;Here’s what my BrewsDetails.astro file looked like with this solution:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;capitalize&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;brewIcon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./utilities/stringformatter.mjs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;brewImage&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{8}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{4}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{4}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{4}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;{12}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000;--2:#F5776E&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-400$1$2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brew-image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/bottle/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/brews/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewImage&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;&amp;#x3C;!-- Etc, etc, etc --&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;div class=&quot;&quot;&gt;    &lt;a href=&quot;&quot;&gt;      &lt;img src=&quot;&quot;&gt;    &lt;/a&gt;  &lt;/div&gt;&lt;!-- Etc, etc, etc --&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The first thing eagle-eyed readers will notice is that I’m not using any kind of image component at all here – just a plain old html img tag. This is because I was already generating the optimized images and because I was using a wider image size than needed to help with the high pixel-density display cases.&lt;/p&gt;
&lt;p&gt;This string is just making sure we’re grabbing the 400 pixel wide version of the image for this view:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;const brewImage = brew.image.replace(/(-)(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})$/, &quot;-400$1$2&quot;) + &quot;.webp&quot;;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is all fine and dandy, but it’s less optimal than the pre-Astro 3.0 days, because the html I was using does nothing for lazy loading, does nothing for only grabbing the largest image needed for the device screen size and pixel density, and is basically a massive compromise.&lt;/p&gt;
&lt;p&gt;I was not a giant fan of having to do this, in other words.&lt;/p&gt;
&lt;p&gt;Fortunately, the smart people at Astro kept refining Astro 3.x’s image optimization solution.&lt;/p&gt;
&lt;h2 id=&quot;astro-33-solution&quot;&gt;Astro 3.3+ Solution&lt;/h2&gt;
&lt;p&gt;Now that Astro 3.3+ has the ability to use the Image or Picture components to generate multiple widths per image format, this solves the problem of different screen sizes and pixel densities. Now I can let it generate the extra images for me.&lt;/p&gt;
&lt;p&gt;Here’s what the Picture component looks like for these small drink images:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Picture&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:assets&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;capitalize&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;brewIcon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./utilities/stringformatter.mjs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brew-image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/bottle/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../assets/images/brews/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;&amp;#x3C;!-- Etc, etc, etc --&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;div class=&quot;&quot;&gt;    &lt;a href=&quot;&quot;&gt;          &lt;/a&gt;  &lt;/div&gt;&lt;!-- Etc, etc, etc --&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Here’s the file diff between my Astro 3.0-3.2 version versus my new Astro 3.3+ version:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BrewDetailsDiff-A6C47A65-A427-41E9-9680-60634AF6F4B1.jpg&quot;&gt;&lt;img alt=&quot;BrewsDetails.astro file diff&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;520&quot; src=&quot;https://scottwillsey.com/_astro/BrewDetailsDiff-A6C47A65-A427-41E9-9680-60634AF6F4B1.Cu5YegbA_Z1dAkok.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By the way, remind me to talk about &lt;a href=&quot;https://kaleidoscope.app&quot;&gt;Kaleidoscope&lt;/a&gt; sometime. Its ability to diff things in multiple views, act as the command line difftool, and show diffs between different git commit versions is really spectacular.&lt;/p&gt;
&lt;h3 id=&quot;importing-images-using-dynamic-file-names&quot;&gt;Importing images using dynamic file names&lt;/h3&gt;
&lt;p&gt;Notice the difference between the way the Picture src property is composed here compared to the pre-Astro 3 version in the first half of this article? This is because the images located in the src directory need to be imported for the astro:assets Image and Picture components. Typically import statements do not like dynamically constructed strings – they error out and complain that you need to give them a static string.&lt;/p&gt;
&lt;p&gt;Fortunately I ran across an &lt;a href=&quot;https://discord.com/channels/830184174198718474/1161019402620248266&quot;&gt;Astro Discord thread explaining how to do the import using a dynamic string&lt;/a&gt; (still requiring the file extension to be statically defined, of course), and let’s just melodramatically say that it changed my life.&lt;/p&gt;
&lt;p&gt;Another equivalent way to do it would be to use import.meta.glob to grab all the image assets and then grab the image using the key of the matching image file name, like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;images&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#6CB6FF&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../assets/images/brews/*.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;images&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../assets/images/brews/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bottle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;A description.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&amp;#x60;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;If, like me, you were desperately hoping for a better way to optimize your images after migrating to Astro 3, your prayers are pretty much answered. There’s still the issue of image links in your markdown files, though. I’ll cover that topic in a future post.&lt;/p&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://astro.build/blog/astro-330/&quot;&gt;Astro 3.3: Picture component | Astro Blog&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://docs.astro.build/en/guides/images/#image--astroassets&quot;&gt;Images Component &lt;span role=&quot;img&quot; aria-label=&quot;rocket&quot;&gt;🚀&lt;/span&gt; Astro Documentation&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://docs.astro.build/en/guides/images/#picture-&quot;&gt;Picture Component &lt;span role=&quot;img&quot; aria-label=&quot;rocket&quot;&gt;🚀&lt;/span&gt; Astro Documentation&lt;/a&gt;&lt;br&gt;
My &lt;a href=&quot;https://scottwillsey.com/series/responsive-images/&quot;&gt;Responsive Images&lt;/a&gt; series&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;The issue of how markdown images are optimized is not completely immaterial because markdown image links are used for every single image inside blog posts or podcast show notes, for example. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Astro 3.3 dramatically improves the Astro image optimization story once again.</summary></item><item><title>Podcast Transcripts with Audio Hijack</title><link>https://scottwillsey.com/audio-hijack-transcribe</link><guid isPermaLink="true">https://scottwillsey.com/audio-hijack-transcribe</guid><description>Rogue Amoeba just added a Whisper powered transcription feature to Audio Hijack, and I am going to give it a try.</description><pubDate>Fri, 03 Nov 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There I was sitting in bed after a long work day, reading &lt;a href=&quot;https://sixcolors.com/&quot;&gt;SixColors&lt;/a&gt;, as one should, when I stumbled across this article: &lt;a href=&quot;https://sixcolors.com/post/2023/11/audio-hijack-adds-automatic-transcription/&quot;&gt;Audio Hijack adds automatic transcription&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is kind of exciting. I have mixed feelings about it, actually. On the one hand, not having to laboriously create transcripts after the fact with the admittedly lovely MacWhisper does sound good. On the other hand, I’ll still have to edit the transcript to more closely mirror the edited podcast, since this will transcribe the live recorded version of the conversation instead of the edited version.&lt;/p&gt;
&lt;p&gt;Anyway, who cares – obviously I’m going to try this out for the next recording of &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; and see how it goes. Here’s my setup, which I believe &lt;em&gt;should&lt;/em&gt; let me get an attributed transcription:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Transcript-block-2E72E021-C8FC-4E13-881D-D0B7CAF2E534.jpg&quot;&gt;&lt;img alt=&quot;Audio Hijack Transcript Block&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1042&quot; src=&quot;https://scottwillsey.com/_astro/Transcript-block-2E72E021-C8FC-4E13-881D-D0B7CAF2E534.l8M-j90e_2ngml2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’ve used MacWhisper’s Transcribe Podcast feature on the last two episodes of Friends with Brews I’ve transcribed to get speaker attribution. You can see it in action on the &lt;a href=&quot;https://friendswithbrews.com/transcripts/52/&quot;&gt;transcription for Episode 52 – If I Were a Beer&lt;/a&gt;. If I can replicate that while recording the podcast instead of as a separate task later, you can bet that Audio Hijack Transcribe block will be value added.&lt;/p&gt;</content:encoded><summary>Rogue Amoeba just added a Whisper powered transcription feature to Audio Hijack, and I am going to give it a try.</summary></item><item><title>Podcast Recording Practices</title><link>https://scottwillsey.com/podcasting-recording-practices</link><guid isPermaLink="true">https://scottwillsey.com/podcasting-recording-practices</guid><description>Part 3 of a series on podcasting setups and workflows. These are some things you should consider in order to record a clean, pleasant sounding podcast.</description><pubDate>Tue, 10 Oct 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I talked previously about the &lt;a href=&quot;https://scottwillsey.com/podcasting-recording-software/&quot;&gt;recording software I use for podcasting on the Mac&lt;/a&gt;. It’s all great stuff, and if you haven’t read that article, you should. Even if you think you’re not a podcaster, maybe someday you will be, and each of those applications has use far beyond creating podcasts.&lt;/p&gt;
&lt;p&gt;At some point in the near-ish future, I want to talk about specific app setups and use methodologies for podcasting, but before I do that I want to talk about some general best practices for recording. Some of these will help make the life of whoever edits your podcast a lot easier, assuming they care about sound quality and conversation flow.&lt;/p&gt;
&lt;p&gt;I know a lot of people say no one cares about audio quality or crosstalk or words repeated three times in a row, but people do care. It’s a lot different being in a conversation and not really hearing all the starts and stops and repeated words and uhms and ahhs, but they start to matter for people listening to podcasts.&lt;/p&gt;
&lt;p&gt;Since your goal is to make your podcast as enjoyable as possible and you don’t know what annoys any given listener, why not make a good faith effort to make it as listenable as possible? In terms of recording, it takes very little extra effort to have a good quality sound and smooth conversation versus one that makes it obvious you couldn’t be bothered.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;My motto about effort is “I can care less than you do”, meaning that if you, the media or product producer, don’t even care enough to try, why should anyone else care about your product either? This is not the same as saying you have to sound like This American Life or have custom jingles and the best artwork in existence. It does mean you need to clearly be trying so that your listeners know you really do care about their experience. Other people won’t care about your thing unless you care about your thing.&lt;/p&gt;
&lt;h2 id=&quot;get-rid-of-noise&quot;&gt;Get Rid of Noise&lt;/h2&gt;
&lt;p&gt;If you have a noisy podcast, some segment of your audience, probably a much larger segment than you think, will notice and will care. There have been several podcasts I’ve tried in the past that I just couldn’t listen to because it was too obvious that the hosts just recorded without testing or listening back to their own material and threw it out there for the world to suffer to.&lt;/p&gt;
&lt;p&gt;When I say noisy, I’m using the term as a catch-all for background noise, hiss in the recording, water heaters, air conditioning, vocal reverb or extreme compression (think Skype or Zoom recordings), and even things like clipping, which is when your signal is too loud for the mic to handle and the waveform clips at the top, resulting in a very painful noise in the recording. It’s amazing how many people don’t even bother to see if they’re clipping or not, and it can be hard to fix in post.&lt;/p&gt;
&lt;p&gt;Some simple steps for getting rid of noise in your podcast include the following.&lt;/p&gt;
&lt;h3 id=&quot;consider-your-mic&quot;&gt;Consider Your Mic&lt;/h3&gt;
&lt;p&gt;Use a decent mic, preferably one that doesn’t pick up every sound between the mic diaphragm and Mars. For this reason, condenser mics like the oddly popular Blue Yeti will not work for many people.&lt;/p&gt;
&lt;h3 id=&quot;echoing-is-for-the-alps&quot;&gt;Echoing Is for the Alps&lt;/h3&gt;
&lt;p&gt;Reduce echo in your recording environment. Foam panels and temporary throw rugs and curtains can do wonders to absorb sound rather than let it bounce around.&lt;/p&gt;
&lt;h3 id=&quot;dont-blow-hot-or-cold-air&quot;&gt;Don’t Blow Hot (Or Cold) Air&lt;/h3&gt;
&lt;p&gt;Record as far away from air blowers as you can. Sometimes you’ll have no choice but to record with AC or heating on – let your editor know (maybe that’s you) so they can test some recordings of yours and see if they can remove the noise cleanly. Chances are they can, but they may need a little trial and error.&lt;/p&gt;
&lt;h3 id=&quot;mute-yourself&quot;&gt;Mute Yourself&lt;/h3&gt;
&lt;p&gt;Have a mute switch, be it hardware or software based. I have an &lt;a href=&quot;https://www.elgato.com/us/en/p/wave-xlr&quot;&gt;Elgato Wave XLR&lt;/a&gt;, which has a capacitive touch mute switch, and I love it. Peter uses an app called &lt;a href=&quot;https://mizage.com/shush/&quot;&gt;Shush&lt;/a&gt; since he’s using a USB mic.&lt;/p&gt;
&lt;p&gt;Use your mute switch when you cough, snort, drink (unless your podcast IS at least partially about the drink), eat, or otherwise make noises that your editor should care about. Also mute whenever not talking to avoid the temptation to talk over someone else, which also makes editing take longer (again, your editor should care about crosstalk).&lt;/p&gt;
&lt;h3 id=&quot;its-all-in-the-technique&quot;&gt;It’s All in the Technique&lt;/h3&gt;
&lt;p&gt;Learn good mic technique. This is harder than it sounds. It’s very easy to talk very loud sometimes and very quietly at other times. Some mics require eating the mic and others will overdrive in a second if you’re an inch too close and be at a nice level otherwise. Stay at a consistent distance and position relative to the mic, and don’t forget you ARE recording and not just having a nice zoom call.&lt;/p&gt;
&lt;p&gt;What you’re striving for are consistent levels and quality of voice, and both can change drastically based on your own speech habits (talking loudly at the start of a sentence and trailing off into a whisper) or distance from mic. Practice and listen to your practice recordings.&lt;/p&gt;
&lt;h3 id=&quot;think-global-act-local&quot;&gt;Think Global, Act Local&lt;/h3&gt;
&lt;p&gt;Have everyone record their own mic locally. You will put each of these recordings into your editor and line them up. This will give you the ability to eliminate crosstalk (which you can’t do with everyone other than you on one track), get better, non-compressed sound quality (which you can’t do with a Skype or Zoom recording), compensate for noise and volume differences between other hosts (which is much harder to do with everyone else on one track), and can and should result in the best sounding voices for everyone.&lt;/p&gt;
&lt;p&gt;Making everyone sound as good as possible is the editor’s goal. If you’re a host and also the editor, you get zero points for caring about the sound of your own voice and no one else’s.&lt;/p&gt;
&lt;p&gt;There are lots of other considerations for clean sound, but this is a start, and I’ve already yammered on for almost 950 words now. So just one more thing:&lt;/p&gt;
&lt;h2 id=&quot;practice-and-tweak&quot;&gt;Practice and Tweak&lt;/h2&gt;
&lt;p&gt;This does not mean I want you to be a tweaker, but I do want you to record and listen to the recordings. Have your co-hosts do the same, and give everyone’s test recordings to the editor to play with. Change your environment and/or recording settings as necessary. This takes practice, googling, and research if you’re not an audio engineer, but fortunately there is enough good quality affordable hardware and software that can create a nice sound that you don’t need to become an audio engineer either.&lt;/p&gt;
&lt;p&gt;Next time I’ll talk about some specific software settings I use to try to get a decent recording. I know this post is very high-level and theoretical, but it’s really more of a nudge to think about these things and realize they need to be taken into consideration. Your listeners will thank you, but so will your inner producer. It’s your name on the product, so why not make it as pleasant to listen to as possible?&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;This probably sounds preachy, and I don’t claim to have the most amazing podcast production quality in the world. But I do TRY. The listeners can give me feedback if they think I’m failing at it, but if anyone says I don’t take it seriously, they are wildly incorrect. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Part 3 of a series on podcasting setups and workflows. These are some things you should consider in order to record a clean, pleasant sounding podcast.</summary></item><item><title>Astro 3 and Responsive Images</title><link>https://scottwillsey.com/astro-3-responsive-images</link><guid isPermaLink="true">https://scottwillsey.com/astro-3-responsive-images</guid><description>Astro 3 required me to rethink my site image optimization strategy yet again. Am I finally done? Probably not.</description><pubDate>Mon, 18 Sep 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://astro.build/blog/astro-3/&quot;&gt;Astro 3 is here&lt;/a&gt; and you’re looking at a site published with it. I spent a few days last week converting this site and &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; from Astro 2.x to Astro 3, and there are some things I had to learn and decide to make it happen, and most of it has to do with responsive images.&lt;/p&gt;
&lt;p&gt;You may recall my long saga of &lt;a href=&quot;https://scottwillsey.com/series/responsive-images/&quot;&gt;responsive image generation&lt;/a&gt; methods for this site and for &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt;. Most of this journey has revolved around the fact that there are two kinds of optimized images on my sites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Site related (logos, images for permanent site pages, etc),&lt;/li&gt;
&lt;li&gt;Content related (images in blog posts or podcast episode show notes).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;site-related-images&quot;&gt;Site Related Images&lt;/h2&gt;
&lt;p&gt;Site related images are easy. I can use whatever the image optimization scheme de jour that Astro uses because these are known, unchanging files and because I refer to them inside Astro components.&lt;/p&gt;
&lt;p&gt;In the case of Astro 3, the &lt;a href=&quot;https://docs.astro.build/en/guides/images/#image--astroassets&quot;&gt;astro:assets Image component&lt;/a&gt; is the official way to create optimized images inside Astro components.&lt;/p&gt;
&lt;p&gt;This component is a lot less flexible and capable than the previous &lt;a href=&quot;https://docs.astro.build/en/guides/images/#remove-astrojsimage&quot;&gt;@astrojs/image component&lt;/a&gt;. There’s no Picture component, it doesn’t resize images from the original size, and as a result it’s easy to wind up with larger image sizes than you need and not have smaller physical sizes for responsive views like phone browsers. But it handles Astro SSR mode and prevents CLS (cumulative layout shift), which is really annoying to see.&lt;/p&gt;
&lt;p&gt;I have relatively few site images on either this site or &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; – mostly site logos and pictures of the offenders (me on this site and Peter and me on Friends with Brews).&lt;/p&gt;
&lt;p&gt;Using Image in an Astro component involves importing the images to be used and setting those imported images as the Image component src.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:assets&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../data/site.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;av&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../assets/images/ScottLatest.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;About Me - &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;About Scott Willsey&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;About Me&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;about-av&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;av&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott Willsey&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;quality&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;85&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(etc, etc, etc)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; &lt;article&gt; &lt;h1&gt;About Me&lt;/h1&gt; &lt;Image  class=&amp;#x22;about-av&amp;#x22;  src={av}  width={600}  format={&amp;#x22;webp&amp;#x22;}  alt=&amp;#x22;Scott Willsey&amp;#x22;  quality={85} /&gt;  (etc, etc, etc)&quot;&gt;&lt;div&gt;&lt;/div&gt;
&lt;p&gt;It’s important to note again that width={600} doesn’t result in Image creating a 600 px wide version of the image. It will create a webp image of 85% quality as specified but in the original image dimensions and aspect ratio. The 600 pixel width is used in the HTML that it outputs to tell the browser what to do with it:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-astro-cid-kh7btl4r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-astro-cid-kh7btl4r&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;About Me&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/_astro/ScottLatest.69c944ff_Ctgce.webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;about-av&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott Willsey&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-astro-cid-kh7btl4r&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;loading&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;lazy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;decoding&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-astro-cid-kh7btl4r&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Hello, friend.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(etc, etc)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; &lt;h1 data-astro-cid-kh7btl4r=&quot;&quot;&gt;About Me&lt;/h1&gt; &lt;img src=&quot;&quot;&gt;  &lt;p data-astro-cid-kh7btl4r=&quot;&quot;&gt;Hello, friend.&lt;/p&gt;  (etc, etc)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;content-related-images&quot;&gt;Content Related Images&lt;/h2&gt;
&lt;p&gt;Content related images are images IN the content of the site itself, whether that be blog posts (this site) or podcast episode show notes (&lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt;). In my case, my content is in Markdown, so my image links are just standard Markdown image links. They are also hyperlinked to the original full-sized image.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;The one really interesting setting is &quot;Keep History For&quot;, which has options for 7 days, 30 days, 3 months, 6 months, 1 year, or unlimited. Unlimited comes with a warning that your hard drive will slowly be eaten alive and you should be ok with that.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;Clipboard History retention length setting&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;The Clipboard History view itself is relatively simple. You can have pinned history items, and below those are your history items in reverse chronological order. The beauty of a clipboard history function is that you can copy several things in a row from a source and then worry about pasting them all later without losing any of them.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;The one really interesting setting is &amp;#x22;Keep History For&amp;#x22;, which has options for 7 days, 30 days, 3 months, 6 months, 1 year, or unlimited. Unlimited comes with a warning that your hard drive will slowly be eaten alive and you should be ok with that.[![Clipboard History retention length setting](../../assets/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.png)](/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.jpg)The Clipboard History view itself is relatively simple. You can have pinned history items, and below those are your history items in reverse chronological order. The beauty of a clipboard history function is that you can copy several things in a row from a source and then worry about pasting them all later without losing any of them.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Get rid of all that hyperlink stuff and the Markdown for the image itself looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Clipboard History retention length setting&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;../../assets/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;![Clipboard History retention length setting](../../assets/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.png)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Tangent:&lt;/p&gt;
&lt;p&gt;Yes, I put UUIDs in my image names so that I never have to worry about name collisions, however unlikely. I have this automated on my Mac with folder actions. I talked about folder actions in my post about &lt;a href=&quot;https://scottwillsey.com/autoimageprocess/&quot;&gt;Automatic Image Processing With AppleScript and Retrobatch&lt;/a&gt;, but basically the idea is you can set a script to run whenever a specific thing happens to a folder. I can dump a bunch of images into a specific folder and they get output into another folder with the original file name plus a UUID appended.&lt;/p&gt;
&lt;p&gt;Anyway, the good news is that the &lt;a href=&quot;https://docs.astro.build/en/guides/images/#images-in-markdown-files&quot;&gt;astro:assets Image component handles images in Markdown&lt;/a&gt; for you by creating optimized versions in more efficient file types. Here you can see one specific png that it created a webp version for, and the difference in file size.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Songoku:scottwillsey3.0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;✗&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;2d&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;△&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;dist/_astro&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Songoku:_astro&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;✗&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;2d&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;△&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ll&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;FolderActionsSetupMenu&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;527607&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Sep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:37&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;FolderActionsSetupMenu-86B4A871-966E-4A27-A2C5-3FC85E131D6C.4464166b.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;staff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;60900&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Sep&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18:37&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;FolderActionsSetupMenu-86B4A871-966E-4A27-A2C5-3FC85E131D6C.4464166b_Q8a7k.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Songoku:_astro&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;✗&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;2d&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;△&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@Songoku:scottwillsey3.0 main ✗ 2d △ ➜ cd dist/_astroscott@Songoku:_astro main ✗ 2d △ ➜ ll FolderActionsSetupMenu*-rw-r--r--@ 1 scott  staff  527607 Sep 15 18:37 FolderActionsSetupMenu-86B4A871-966E-4A27-A2C5-3FC85E131D6C.4464166b.png-rw-r--r--@ 1 scott  staff   60900 Sep 15 18:37 FolderActionsSetupMenu-86B4A871-966E-4A27-A2C5-3FC85E131D6C.4464166b_Q8a7k.webpscott@Songoku:_astro main ✗ 2d △ ➜&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;One thing that isn’t different is the image dimensions:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ImageComponentOptimizedVsOrig-5652E165-2DC3-4106-BCF5-D18E63514AD4.jpg&quot;&gt;&lt;img alt=&quot;Image component optimized vs. original image dimensions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1610&quot; height=&quot;752&quot; src=&quot;https://scottwillsey.com/_astro/ImageComponentOptimizedVsOrig-5652E165-2DC3-4106-BCF5-D18E63514AD4.CjyX15YZ_ZmXOHG.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This means I have to pay more attention to original image sizes that I’d prefer to. I’m hoping in the future this new Images component will gain some of the functionality back that it had before, but my guess is the real monkey in the wrench in doing some of those things is the SSR support.&lt;/p&gt;
&lt;p&gt;Right now I have a Folder Action that resizes my images to a maximum width of 1770 pixels. I can use those for the blog post inline images and link to the original sized ones. That gives me a compromise between image size and responsiveness, taking into account the high-resolution nature of most modern screens. Images need to be 2x and in many cases 3x the size they’ll be shown at in order to look sharp.&lt;/p&gt;
&lt;p&gt;At some point I’ll probably revisit this but no matter what I do, astro:assets Image currently will not generate &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#srcset&quot;&gt;image srcset&lt;/a&gt; HTML for me, so even if I generate multiple sizes for the same file format, only one of them is ever going to get used.&lt;/p&gt;
&lt;h3 id=&quot;markdown-vs-mdx&quot;&gt;Markdown vs MDX&lt;/h3&gt;
&lt;p&gt;You may recall that when I originally converted the site from Eleventy to Astro, I used &lt;a href=&quot;https://mdxjs.com&quot;&gt;MDX&lt;/a&gt; for my content files instead of Markdown. MDX allows the use of components and would let me directly use the astro:assets Image component in my content for content images the same way I do in my Astro components for site images.&lt;/p&gt;
&lt;p&gt;Astro 3 will let you &lt;a href=&quot;https://docs.astro.build/en/guides/images/#images-in-mdx-files&quot;&gt;use the astro:assets Image component directly in MDX&lt;/a&gt;. This gives you more control over the HTML that’s generated for your image, but it also comes with extra complexity in terms of the writing process.&lt;/p&gt;
&lt;p&gt;I decided a long time ago that I don’t want to go down that path any longer because when I’m writing, I don’t want to mix implementation details with content. I don’t write my blog posts in a code editor, and when I’m writing, I don’t want to have to remember how I have everything set up, and I don’t want to have to import components and images into a content file. I just want to use Markdown links.&lt;/p&gt;
&lt;h3 id=&quot;image-component-vs-astro-remark-eleventy-image&quot;&gt;Image Component vs Astro Remark Eleventy Image&lt;/h3&gt;
&lt;p&gt;The last Astro 2.x version of this site used &lt;a href=&quot;https://github.com/ChrisOh431/astro-remark-eleventy-image&quot;&gt;Astro Remark Eleventy Image&lt;/a&gt; to generate responsive images for images inside markdown content. It worked well, it’s very flexible, and it had several upsides. The downsides are no support for SSR, if you need that, and it results in a slower build process because it doesn’t cache previously rendered images. Because of this latter fact, I decided to move entirely to the astro:assets Image component.&lt;/p&gt;
&lt;p&gt;I was also worried about Astro’s Image component trying to process images in my Markdown files and fighting Astro Remark Eleventy Image, but I haven’t tested to see if this will happen. I may make a branch and link to my public images folder for images in Markdown and see if that avoids a collision between the components. If so, I may wind up using Astro Remark Eleventy Image again to get more responsive images with better file size/quality compromises.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Even when I’m done, I’m never done. That’s the real takeaway here. As with anything, careful consideration of how you use images and what the compromises are between different solutions is required with Astro 3 (and every version of every web framework, honestly). I’m sure there will be much more on the topic of image optimization from me in the future, given my history with it so far.&lt;/p&gt;&lt;/article&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded><summary>Astro 3 required me to rethink my site image optimization strategy yet again. Am I finally done? Probably not.</summary></item><item><title>Raycast Clipboard History</title><link>https://scottwillsey.com/raycast-clipboard-history</link><guid isPermaLink="true">https://scottwillsey.com/raycast-clipboard-history</guid><description>Raycast comes with a basic, easy to use, and well designed Clipboard History feature.</description><pubDate>Fri, 15 Sep 2023 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of Raycast’s &lt;a href=&quot;https://manual.raycast.com/core&quot;&gt;core features&lt;/a&gt; is Clipboard History. Clipboard History is exactly what it sounds like – a basic clipboard manager that lets you access your clipboard history.&lt;/p&gt;
&lt;p&gt;Clipboard History has several settings. As always, to get to Raycast settings, launch Raycast with your keyboard shortcut (⌥+Space in my case), then hit ⌘+, (the standard macOS application preferences keyboard shortcut) to open Raycast Settings.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ClipboardHistorySettings-7FC116B9-CAB0-4180-9FDA-762D682B75F3.jpeg&quot;&gt;&lt;img alt=&quot;Clipboard History settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2224&quot; height=&quot;1504&quot; src=&quot;https://scottwillsey.com/_astro/ClipboardHistorySettings-7FC116B9-CAB0-4180-9FDA-762D682B75F3.B5ik9qiT_2vNgqg.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There’s probably not too much you’ll want to change. You’ll probably want Clipboard History to paste to the active app instead of back to the clipboard, and you’ll probably want fast text recognition for text in photos. The one really interesting setting is “Keep History For”, which has options for 7 days, 30 days, 3 months, 6 months, 1 year, or unlimited. Unlimited comes with a warning that your hard drive will slowly be eaten alive and you should be ok with that.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.jpg&quot;&gt;&lt;img alt=&quot;Clipboard History retention length setting&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2042&quot; height=&quot;1214&quot; src=&quot;https://scottwillsey.com/_astro/ClipboardHistoryLengthSetting-E511BEDE-4432-49AB-A442-05069F910E41.Rww-rsej_1lgzUo.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Clipboard History view itself is relatively simple. You can have pinned history items, and below those are your history items in reverse chronological order. The beauty of a clipboard history function is that you can copy several things in a row from a source and then worry about pasting them all later without losing any of them. As you can see, clipboard history includes files and images. Any clipboard items show what app they were copied from, what the content type is, and then details such as word count or image dimensions.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ch-image-23A05452-7AEB-4F72-B829-5CA21D67A0B5.jpg&quot;&gt;&lt;img alt=&quot;Clipboard History image&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1772&quot; height=&quot;1172&quot; src=&quot;https://scottwillsey.com/_astro/ch-image-23A05452-7AEB-4F72-B829-5CA21D67A0B5.DM3S5Y1T_Z1oBNpf.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ch-retrobatch-23A05452-7AEB-4F72-B829-5CA21D67A0B5.jpg&quot;&gt;&lt;img alt=&quot;Clipboard History Retrobatch file&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1772&quot; height=&quot;1172&quot; src=&quot;https://scottwillsey.com/_astro/ch-retrobatch-23A05452-7AEB-4F72-B829-5CA21D67A0B5.C-u90fwK_ZGxp0Q.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Whatever app is active when you trigger Raycast and Clipboard History will be the app you can paste your selected item into by hitting Return. If you have your cursor in a Safari URL bar at the time, it’ll paste it there, assuming it’s text. If you’re typing in &lt;a href=&quot;https://getdrafts.com&quot;&gt;Drafts&lt;/a&gt;, like I am right now, it’ll paste the item into Drafts. In each case, the paste will only happen if the selected item is a content type that’s contextually possible – you can’t paste images into Safari URL bars or even into Drafts (it’s a markdown text editor), but you CAN paste an image or other file into a Finder window or an image into a text editor that takes images.&lt;/p&gt;
&lt;p&gt;Clipboard History isn’t something you can get people hyped up about at parties, but it is super useful and it’s nice having an easy to use and straightforward implementation of a clipboard manager right in Raycast. You wouldn’t get Raycast just for Clipboard History because there are tons of other Mac clipboard managers, but if you do use it already, the simplicity and well thought out design make Clipboard History indispensable.&lt;/p&gt;
&lt;p&gt;As always with everything in Raycast, you can assign a Hotkey (keyboard shortcut) or alias (open Raycast and type the alias) to Clipboard History. I have an alias of ch assigned so I can just pop open Raycast, type ch and hit enter and be in Clipboard History.&lt;/p&gt;
&lt;p&gt;You can read more about Raycast Clipboard History in the &lt;a href=&quot;https://manual.raycast.com&quot;&gt;Raycast manual&lt;/a&gt; section on &lt;a href=&quot;https://manual.raycast.com/core&quot;&gt;Raycast Core&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>Raycast comes with a basic, easy to use, and well designed Clipboard History feature.</summary></item><item><title>Raycasting</title><link>https://scottwillsey.com/raycasting</link><guid isPermaLink="true">https://scottwillsey.com/raycasting</guid><description>Some very basics of Raycast in the first in a series of articles on Raycast.</description><pubDate>Fri, 25 Aug 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’ve listened to recent &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; episodes, you probably know that I’ve gotten into &lt;a href=&quot;https://www.raycast.com&quot;&gt;Raycast&lt;/a&gt; in a big way. Raycast falls in the category of “App Launcher”, but I really dislike that title as it sells short what most of the good app launcher category apps do. For me, Raycast is a system utility that verges into automation territory.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastWindow-645D7069-71EA-40AA-ADF0-B16214B87BCE.jpeg&quot;&gt;&lt;img alt=&quot;Raycast window&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1772&quot; height=&quot;1172&quot; src=&quot;https://scottwillsey.com/_astro/RaycastWindow-645D7069-71EA-40AA-ADF0-B16214B87BCE.C0zibty__2faS3L.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I intended to write one blog post about all the features I use in Raycast. About the time I’d gotten to the 1600 word mark on my draft, I had a conversation with my friend &lt;a href=&quot;https://infosec.exchange/@nikolaidis&quot;&gt;Peter&lt;/a&gt; about some Raycast articles he’d read. Specifically, Peter didn’t like the fact that they all mentioned some commands you could use and showed some screen shots, but never went into depth about how they worked or why you’d want to use those features to begin with. At that point I saw my single gigantic post fracture into a million tiny pieces, and I knew it was going to be a series on Raycast. It’s the only way to provide meaningful information on how to use it rather than just flinging a bunch of bullet points at the page.&lt;/p&gt;
&lt;p&gt;Raycast has a lot of features and requires some digging into to find what works and how it works. The versatility in terms of how to find and use commands is important to grasp because the right setup can make the difference between adding new workflows to your Mac use that make you efficient and happy, and forgetting those features are there at all and wondering why people think Raycast is even useful. It’s no different than any other multipurpose tool in that regard.&lt;/p&gt;
&lt;h2 id=&quot;what-is-raycast&quot;&gt;What IS Raycast?&lt;/h2&gt;
&lt;h3 id=&quot;what-does-raycast-say-raycast-is&quot;&gt;What does Raycast say Raycast is?&lt;/h3&gt;
&lt;p&gt;One way to find out what an app is is to ask the developer of the app what it is. Raycast (the company) has this to say about Raycast (the product):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Raycast is a blazingly fast, totally extendable launcher. It lets you complete tasks, calculate, share common links, and much more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That’s great, and it’s true, but it’s also not enough information to help someone who truly doesn’t know anything about the horrendously named app launcher category understand why they’d want to use it. I understand they need a concise statement of purpose, and truthfully I doubt I could do any better myself. That’s why this first blog post in my series on Raycast is &lt;em&gt;just&lt;/em&gt; bit longer than that.&lt;/p&gt;
&lt;h3 id=&quot;what-does-chatgpt-say-raycast-is&quot;&gt;What does ChatGPT say Raycast is?&lt;/h3&gt;
&lt;p&gt;I decided to ask ChatGPT, via Raycast, what ChatGPT thinks Raycast is. ChatGPT’s reply?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Raycast is an AI-powered software productivity tool that provides a unified interface for accessing and executing various tasks, applications, and information within a computer’s operating system. It allows users to quickly search for files, launch applications, perform calculations, access web services, and more, using a text-based command bar. Raycast aims to streamline workflows and improve productivity by simplifying task execution and information retrieval within the computer environment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ok. Again, all technically true, and it’s definitely “within the computer environment”, which is good to know if you’re worried about Raycast trying to take over your house or steal your car.&lt;/p&gt;
&lt;h3 id=&quot;what-does-scott-say-raycast-is&quot;&gt;What does Scott say Raycast is?&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Raycast is a Mac power-user utility for making your workflows faster, more powerful, and more centralized and maintainable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That’s basically my way of saying if you really want to know what Raycast is, you’ll have to read this series. &lt;span role=&quot;img&quot; aria-label=&quot;slightly smiling face&quot;&gt;🙂&lt;/span&gt; But let’s cover some basics and key features of Raycast that will help as I slowly roll out blog posts emphasizing a specific command or extension in detail over the course of this probably infinite Raycast series.&lt;/p&gt;
&lt;h2 id=&quot;some-basics&quot;&gt;Some Basics&lt;/h2&gt;
&lt;p&gt;Raycast is categorized as an app launcher. To that end, it’s basically a search bar that appears on screen when triggered by some key combination. Personally, I use Opt-Space, although I could map it to Cmd-Space and completely replace Spotlight’s keyboard shortcut.&lt;/p&gt;
&lt;h3 id=&quot;search-and-selection&quot;&gt;Search and Selection&lt;/h3&gt;
&lt;p&gt;Once the search bar appears, you start typing things, varying depending on your goal. If you want to launch an app like the horrible category name suggests, you start typing the name of the app and Raycast comes up with options for you to choose from.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastFapplications-153B9CF2-2D39-4B8C-94AA-F8FFF3634556.jpeg&quot;&gt;&lt;img alt=&quot;Raycast application search&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1772&quot; height=&quot;1172&quot; src=&quot;https://scottwillsey.com/_astro/RaycastFapplications-153B9CF2-2D39-4B8C-94AA-F8FFF3634556.BdyBlDyN_Z2aDOcP.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To make selection fast and easy, Raycast lets you use Cmd+number keyboard combinations to make a choice. Hold Cmd for a second and you’ll see what number key to hit to select a particular option. They’re numbered from top to bottom as could be expected, so the Cmd+number choice for a given app is just its order in the list.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/AppLaunching-0BC2DC50-2519-4FDB-82A3-DC2D19ABF05F.jpg&quot;&gt;&lt;img alt=&quot;Raycast Cmd selection numbers&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1886&quot; height=&quot;1200&quot; src=&quot;https://scottwillsey.com/_astro/AppLaunching-0BC2DC50-2519-4FDB-82A3-DC2D19ABF05F.O0F0YOhW_1to0HU.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This same Cmd+number selection technique works for anything you search for in Raycast, so anytime a list is on screen, you can use this to quickly make your choice from the list of applicable items.&lt;/p&gt;
&lt;h3 id=&quot;hotkeys-and-aliases&quot;&gt;Hotkeys and Aliases&lt;/h3&gt;
&lt;p&gt;Anything you can do in Raycast you can &lt;a href=&quot;https://manual.raycast.com/command-aliases-and-hotkeys&quot;&gt;assign to a HotKey or an Alias&lt;/a&gt;. A HotKey is a keyboard shortcut.&lt;/p&gt;
&lt;p&gt;HotKeys let you perform a command without having to open Raycast first. This works especially well for its window management commands, but is useful for a lot of things.&lt;/p&gt;
&lt;p&gt;Aliases require you to open Raycast, but then you just quickly type the alias and you have that command selected and ready to execute without having to search for it and choose it from the list.&lt;/p&gt;
&lt;p&gt;Here’s an example of a bunch of the Window Management commands with HotKeys assigned, followed by one of some Safari commands with Aliases.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastWindowMan-E88DA2A3-E432-461D-9248-9DB397B40E60.jpg&quot;&gt;&lt;img alt=&quot;Raycast HotKeys&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2224&quot; height=&quot;1504&quot; src=&quot;https://scottwillsey.com/_astro/RaycastWindowMan-E88DA2A3-E432-461D-9248-9DB397B40E60.Dai7rEDF_Zo0bRw.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/RaycastAliases-A2E05084-6964-4126-8ACB-7141550CED94.jpg&quot;&gt;&lt;img alt=&quot;Raycast Aliases&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1408&quot; height=&quot;718&quot; src=&quot;https://scottwillsey.com/_astro/RaycastAliases-A2E05084-6964-4126-8ACB-7141550CED94.DhPdjuH8_Z1bilBd.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These are some of the very basics of Raycast that will come in handy as I show some examples of my Raycast workflows in future articles.&lt;/p&gt;
&lt;h2 id=&quot;to-be-continued&quot;&gt;To Be Continued&lt;/h2&gt;
&lt;p&gt;I already have some posts on other topics that could be linked as different series on my site but I currently have no way of grouping them and surfacing them to the user as a series. Adding that functionality to the site will be step 1 in the Raycast series, even before firing up Drafts and typing additional words about the app itself. It should be easy enough, and I can even write about how I did it. Bonus!&lt;/p&gt;
&lt;p&gt;Once that’s done, Raycast deep-dives will be forthcoming.&lt;/p&gt;</content:encoded><summary>Some very basics of Raycast in the first in a series of articles on Raycast.</summary></item><item><title>Get Rid of Theme Flicker</title><link>https://scottwillsey.com/theme-flicker</link><guid isPermaLink="true">https://scottwillsey.com/theme-flicker</guid><description>Avoiding theme flicker on Astro sites with multiple themes.</description><pubDate>Fri, 11 Aug 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I wrote yesterday, I celebrated &lt;a href=&quot;https://hypercritical.co/2023/07/12/hypercritical-t-shirts-return&quot;&gt;John Siracusa’s every-five-year Hypercritical t-shirt sale&lt;/a&gt; with a &lt;a href=&quot;https://scottwillsey.com/hypercritical-theme/&quot;&gt;new Hypercritical Gold Theme&lt;/a&gt; for this site. As with my previous dark/light mode configuration, toggling themes is done with a little icon button at the bottom of the menu that can look like a sun (when in light mode), a moon (when in dark mode), and now a 128k Mac (when in Hypercritical Gold mode).&lt;/p&gt;
&lt;p&gt;Theme toggling can cause flickering issues when pages load. The symptom is that when you click a link to go to another page on the site, you see a flash of the wrong colors and then the page quickly switches to your chosen theme colors. This is because when the default colors load first, and then the browser realizes you’ve set the theme to something else and loads the correct colors. I had this issue myself, but I didn’t really notice it when I just had light/dark modes, probably because I was almost always in dark mode. I did notice it right away when I added Hypercritical Gold.&lt;/p&gt;
&lt;p&gt;I found two articles addressing this issue, one of which was even written from an Astro perspective.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://axellarsson.com/blog/astrojs-prevent-dark-mode-flicker/&quot;&gt;Prevent dark mode from flickering on page load in Astrojs&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;is:inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// The configured mode is stored in local storage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;isDarkMode&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;localStorage&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;darkMode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Set theme to &apos;dark&apos; if darkMode = &apos;true&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;isDarkMode&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;// Put dark class on html tag to enable dark mode&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;className&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;    ...&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://dev.to/ayc0/light-dark-mode-avoid-flickering-on-reload-1567&quot;&gt;Light/dark mode: avoid flickering on reload - DEV Community&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;localStorage&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;documentElement&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;dataset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;&amp;#x3C;!-- rest of your html --&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;!-- rest of your html --&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;They both basically use exactly the same technique – early on in the page, either in the &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; section or early in the &lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt; section, have an inline JavaScript that checks your preferred theme setting by seeing what your &lt;code&gt;localStorage&lt;/code&gt; setting for your theme choice is.&lt;/p&gt;
&lt;p&gt;As it happens, I was already doing this. But I was doing it in my menu component, which in turn is called by my Base.astro base layout. Also my script was declared as &lt;code&gt;&amp;#x3C;script&gt;&lt;/code&gt; instead of &lt;code&gt;&amp;#x3C;script is:inline&gt;&lt;/code&gt;, which in Astro means it was getting bundled by Vite instead of loading directly inline where it was declared. The result of these two factors meant the timing of the script checking the visitor’s theme preference was off, and theme flicker was the result.&lt;/p&gt;
&lt;p&gt;My first attempt at getting rid of theme flicker was changing the script to use the &lt;code&gt;is:inline&lt;/code&gt; directive, but this caused a problem. Now the script couldn’t find the elements it referred to by ID, namely the theme toggle icons. My assumption is this is because Astro was modifying the element names as part of how it bundled up and rendered the component, but with the JavaScript now being unmodified and unprocessed by Astro, it no longer knew what those were now called.&lt;/p&gt;
&lt;p&gt;Because of this, I decided to nuke the menu component and move everything in it into Base.astro. I moved it as is, with the JavaScript above the html for the menu elements, and the script using the &lt;code&gt;is:inline&lt;/code&gt; directive. Now I had a new variation of the JavaScript can’t find html elements issue. For fun, I tried moving the JavaScript down below the menu html, hoping it was still high enough in the page to load the theme quick enough to avoid theme flicker. It seems to have worked – I don’t see theme flicker now while using Hypercritical Gold or Light themes. These are the two themes that would show flicker, because Dark theme is the default.&lt;/p&gt;
&lt;p&gt;To recap, I no longer have a &lt;code&gt;Menu.astro&lt;/code&gt; component. My menu is now in my &lt;code&gt;Base.astro&lt;/code&gt; template. The highlighted part is the JavaScript dealing with loading the correct theme based on the user’s preference, and changing themes when the toggle icon is clicked or tapped.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot; style=&quot;--lnWidth:3ch&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/layouts/Base.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/Header.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Footer&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/Footer.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../styles/sw2.css&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#F69D50&quot;&gt;Props&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#001080;--2:#F69D50&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#001080;--2:#F69D50&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#001080;--2:#F69D50&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;lang&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;en&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;charset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;utf-8&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;viewport&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;width=device-width, initial-scale=1.0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;view-transition&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;same-origin&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/x-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/favicon.ico&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;link&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;preload&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/fonts/BlinkMacSystemFont-Medium.woff2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;font/woff2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;crossorigin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;wrapper-grid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;aside&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main-nav&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ri:home-7-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;HOME&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ep:copy-document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;POSTS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/about&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;fluent:info-28-filled&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;ABOUT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;SEARCH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;social&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;threads&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;noto:sewing-needle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;THREADS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;social&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;mastodon&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;simple-icons:mastodon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;MASTO&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;social&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;github&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;simple-icons:github&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;GITHUB&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/rss.xml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-item&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ion:logo-rss&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;RSS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme-toggle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aria-label&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Switch to dark theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sun-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;octicon:sun-24&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;moon-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;octicon:moon-24&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;svg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;viewBox&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;0 0 48 64&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;currentColor&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://www.w3.org/2000/svg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;fill-rule&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;evenodd&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;clip-rule&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;evenodd&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;M44 2H4V0H44.5V2H46V4H44V2ZM46 54V4H48V54H46ZM2 54L46 54V64H2L2 54ZM2 4L2 54H2.14577e-06L0 4H2ZM2 4H4V2H2V4ZM40 8H8V6H40V8ZM40 34V8H42V34H40ZM8 34H40V36H8V34ZM8 34H6V8H8V34ZM15 18V14H17V18H15ZM23 23V14H25V25H21V23H23ZM29 18V14H31V18H29ZM17 29V27H19V29H17ZM27 29V31H19V29H27ZM27 29H29V27H27V29ZM40 46H28V44H40V46ZM10 46V48H6V46H10ZM4 56V62H44V56H4Z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#ab0000;--2:#71b8ff&quot;&gt;is:inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#005593;--2:#71b8ff&quot;&gt;themeToggle&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme-toggle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;localStorage&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;118&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableLightTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;119&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;120&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;121&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableHypercriticalTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;122&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;123&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;124&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableDarkTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;125&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;126&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;127&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableDarkTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;128&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;129&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;130&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;131&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;themeToggle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;click&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;132&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;documentElement&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;hasAttribute&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;133&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;134&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;documentElement&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;135&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;136&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;toggleTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;137&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;138&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;139&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableDarkTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;140&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;documentElement&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;setAttribute&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;141&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;localStorage&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;142&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sun-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;143&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;moon-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;144&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;145&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;146&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;147&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;148&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableLightTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;149&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;documentElement&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;setAttribute&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;150&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;localStorage&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;151&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;moon-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;152&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sun-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;153&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;154&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;155&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;156&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;157&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableHypercriticalTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;158&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;documentElement&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;setAttribute&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;159&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;160&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;161&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f2878d&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;162&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;localStorage&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;163&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;moon-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;164&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sun-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;165&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#f89a93&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;166&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;167&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;168&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;169&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#f89a93&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;toggleTheme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#f69f53&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;170&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;171&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;currentTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;172&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;173&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableDarkTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;174&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;175&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hypercritical&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;176&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableLightTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;177&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;178&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;179&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableHypercriticalTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;180&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;181&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;182&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableDarkTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;183&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;184&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;185&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#8c00b0;--2:#f89a93&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;186&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#664f20;--2:#DCBDFB&quot;&gt;enableDarkTheme&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;187&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;188&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line highlight mark&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;189&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#f2878d;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;190&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;191&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;192&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;aside&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;193&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;194&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;195&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;slot&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;196&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Footer&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;197&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;198&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;199&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;is:inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/scripts/barefoot.min.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;200&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;is:inline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;201&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;lf&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;BareFoot&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;202&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;lf&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;init&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;203&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;204&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;205&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;206&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;207&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;208&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-top&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;14&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;209&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;210&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface-menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;211&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;212&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;position&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;sticky&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;213&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;top&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;214&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;215&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;menu&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;216&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-self&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;217&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;grid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;218&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-template-rows&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;219&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;row-gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;220&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-items&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;221&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;fit-content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;222&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;223&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;224&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;225&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;menu&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;226&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;227&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;text-decoration&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;228&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;229&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;230&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;menu&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#800000&quot;&gt;hover&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;231&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;text-decoration&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;underline&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;232&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;233&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;234&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;menu-item&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;235&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;236&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-direction&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;row&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;237&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;column-gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;238&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-content&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex-start&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;239&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;align-items&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;240&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;241&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;242&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;243&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;244&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;245&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;246&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;menu-item&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;247&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;248&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;249&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;250&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;251&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-self&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;252&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;253&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;254&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;theme-toggle&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;255&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;cursor&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;pointer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;256&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;257&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;258&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;259&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;260&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;261&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;262&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;263&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;264&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;265&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;266&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;hover&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;267&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;focus&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;268&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;269&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;270&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;271&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;272&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;273&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;274&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;fill&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;275&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;276&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;277&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;hover&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;278&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;hypercritical-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;focus&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;279&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;fill&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;280&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;281&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;282&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;octicon:sun-24&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;283&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;284&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;285&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;286&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;287&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;only&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;screen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#D30000;--2:#6CB6FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;899&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;288&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;289&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-top&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;290&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;291&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;menu-item&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;292&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;column-gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;293&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;294&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;295&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;menu-item&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;296&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;297&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;298&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;theme&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;299&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;300&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;301&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;302&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;head&gt;    &lt;meta charset=&quot;&quot;&gt;    &lt;meta name=&quot;&quot;&gt;    &lt;title&gt;{title}&lt;/title&gt;    &lt;meta name=&quot;&quot;&gt;    &lt;meta name=&quot;&quot;&gt;    &lt;meta name=&quot;&quot;&gt;    &lt;link rel=&quot;&quot;&gt;    &lt;link      rel=&amp;#x22;preload&amp;#x22;      href=&amp;#x22;/fonts/BlinkMacSystemFont-Medium.woff2&amp;#x22;      as=&amp;#x22;font&amp;#x22;      type=&amp;#x22;font/woff2&amp;#x22;      crossorigin    /&gt;  &lt;/head&gt;  &lt;body&gt;    &lt;div id=&quot;&quot;&gt;      &lt;aside&gt;        &lt;nav id=&quot;&quot;&gt;          &lt;div class=&quot;&quot;&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;&lt;/div&gt;                &lt;div class=&quot;&quot;&gt;HOME&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;                                  &lt;/div&gt;                &lt;div class=&quot;&quot;&gt;POSTS&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;                                  &lt;/div&gt;                &lt;div class=&quot;&quot;&gt;ABOUT&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;&lt;/div&gt;                &lt;div class=&quot;&quot;&gt;SEARCH&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;&lt;/div&gt;                &lt;div class=&quot;&quot;&gt;THREADS&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;                                  &lt;/div&gt;                &lt;div class=&quot;&quot;&gt;MASTO&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;&lt;/div&gt;                &lt;div class=&quot;&quot;&gt;GITHUB&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;a href=&quot;&quot;&gt;              &lt;div class=&quot;&quot;&gt;                &lt;div class=&quot;&quot;&gt;&lt;/div&gt;                &lt;div class=&quot;&quot;&gt;RSS&lt;/div&gt;              &lt;/div&gt;            &lt;/a&gt;            &lt;div class=&quot;&quot;&gt;              &lt;button id=&quot;&quot;&gt;                                                &lt;svg                  id=&amp;#x22;hypercritical-icon&amp;#x22;                  width=&amp;#x22;24&amp;#x22;                  height=&amp;#x22;24&amp;#x22;                  viewBox=&amp;#x22;0 0 48 64&amp;#x22;                  fill=&amp;#x22;currentColor&amp;#x22;                  xmlns=&amp;#x22;http://www.w3.org/2000/svg&amp;#x22;                &gt;                  &lt;path                    fill-rule=&amp;#x22;evenodd&amp;#x22;                    clip-rule=&amp;#x22;evenodd&amp;#x22;                    d=&amp;#x22;M44 2H4V0H44.5V2H46V4H44V2ZM46 54V4H48V54H46ZM2 54L46 54V64H2L2 54ZM2 4L2 54H2.14577e-06L0 4H2ZM2 4H4V2H2V4ZM40 8H8V6H40V8ZM40 34V8H42V34H40ZM8 34H40V36H8V34ZM8 34H6V8H8V34ZM15 18V14H17V18H15ZM23 23V14H25V25H21V23H23ZM29 18V14H31V18H29ZM17 29V27H19V29H17ZM27 29V31H19V29H27ZM27 29H29V27H27V29ZM40 46H28V44H40V46ZM10 46V48H6V46H10ZM4 56V62H44V56H4Z&amp;#x22;                  &gt;                              &lt;/button&gt;            &lt;/div&gt;                      &lt;/div&gt;        &lt;/nav&gt;      &lt;/aside&gt;      &lt;main&gt;                &lt;slot&gt;&lt;/slot&gt;              &lt;/main&gt;    &lt;/div&gt;          &lt;/body&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The moral of the story is, grab the user theme preference and set the theme early in the page load lifecycle. With Astro, that means understanding how Astro is optimizing your layouts, components, CSS, and scripts.&lt;/p&gt;
&lt;p&gt;In my case, because the JavaScript is loaded above the part of the base template that loads the page content, it seems to work timing-wise to load the theme quickly enough to avoid theme flicker.&lt;/p&gt;</content:encoded><summary>Avoiding theme flicker on Astro sites with multiple themes.</summary></item><item><title>Hypercritical GOLD Theme</title><link>https://scottwillsey.com/hypercritical-theme</link><guid isPermaLink="true">https://scottwillsey.com/hypercritical-theme</guid><description>In honor of John Siracusa&apos;s soon-ending every-five-year run of Hypercritical t-shirts, I&apos;ve added a third theme to my site besides the usual light and dark themes: Hypercritical Gold.</description><pubDate>Thu, 10 Aug 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I called this Hypercritical Yellow. John scolded me. And I deserved it.&lt;/p&gt;
&lt;iframe src=&quot;https://mastodon.social/@siracusa/110867150145902280/embed&quot; class=&quot;mastodon-embed&quot; style=&quot;max-width: 100%; border: 0&quot; width=&quot;400&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;As my friend Tiff says, “This response is classic Siracusa. &lt;em&gt;Priceless&lt;/em&gt;.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Original post, edited to say gold instead of yellow:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In honor of John Siracusa’s &lt;a href=&quot;https://cottonbureau.com/p/Q9BWP5/shirt/hypercritical#/17488551/tee-men-standard-tee-gold-100percent-cotton-s&quot;&gt;soon-ending every-five-year run of Hypercritical t-shirts&lt;/a&gt;, I’ve added a third theme to my site besides the usual light and dark themes: Hypercritical Gold.&lt;/p&gt;
&lt;p&gt;This is the t-shirt:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/HypercriticalYellowTee-8ED3266C-982D-447E-AEF0-EE52547FF995.jpeg&quot;&gt;&lt;img alt=&quot;Hypercritical Yellow Tee&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1759&quot; height=&quot;989&quot; src=&quot;https://scottwillsey.com/_astro/HypercriticalYellowTee-8ED3266C-982D-447E-AEF0-EE52547FF995.DjApSLvb_1uhiI2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is my website:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/HypercriticalTheme-4FFD2C08-4ABF-4198-9816-76F9B1338C8E.jpg&quot;&gt;&lt;img alt=&quot;Scott&amp;amp;#x27;s Hypercritical Yellow Theme&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1150&quot; src=&quot;https://scottwillsey.com/_astro/HypercriticalTheme-4FFD2C08-4ABF-4198-9816-76F9B1338C8E.CJ5uXest_2l1r5c.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can toggle the themes on the site menu. There’s a little icon under all the menu items that appears as a moon (if you are in dark theme), a sun (if you’re in light theme), or a little 128k Mac (if you’re in hypercritical theme). Clicking that icon toggles through the themes from dark to hypercritical to light.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</content:encoded><summary>In honor of John Siracusa&apos;s soon-ending every-five-year run of Hypercritical t-shirts, I&apos;ve added a third theme to my site besides the usual light and dark themes: Hypercritical Gold.</summary></item><item><title>Expressive Code Blocks in Astro</title><link>https://scottwillsey.com/astro-expressive-code</link><guid isPermaLink="true">https://scottwillsey.com/astro-expressive-code</guid><description>Create more compelling code blocks and syntax highlighting in Astro with Expressive Code and astro-expressive-code.</description><pubDate>Wed, 09 Aug 2023 08:09:00 GMT</pubDate><content:encoded>&lt;p&gt;You’ve seen a lot of code blocks on this site in various posts of mine, primarily because I’m not ashamed to show what a bad programmer I am or how excited I am that I learned something that’s probably rudimentary to many people. And while I like how the native &lt;a href=&quot;https://docs.astro.build/en/guides/markdown-content/#shiki-configuration&quot;&gt;Astro support for the Shiki syntax highlighter&lt;/a&gt; works, I really like how code blocks look in Astro’s documentation pages even more. It looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/AstroDocsSyntaxHighlighting-5F67B2E2-66DD-455D-BF52-6942F1173C95.jpg&quot;&gt;&lt;img alt=&quot;Astro documentation site code block example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1570&quot; height=&quot;820&quot; src=&quot;https://scottwillsey.com/_astro/AstroDocsSyntaxHighlighting-5F67B2E2-66DD-455D-BF52-6942F1173C95.BalpHci7_vFFBD.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I like the way they do this because it supports various languages and syntaxes, it allows for a frame with the name of the file being shown if applicable, and in general, it just looks really good.&lt;/p&gt;
&lt;p&gt;I posted in the &lt;a href=&quot;https://astro.build/chat&quot;&gt;Astro Discord&lt;/a&gt; Starlight channel to ask how they tweaked Shiki to make it look like this, because I couldn’t tell from the &lt;a href=&quot;https://github.com/withastro/starlight&quot;&gt;Starlight source&lt;/a&gt;. I was looking for rehype markdown plugins or something. &lt;a href=&quot;https://github.com/delucis&quot;&gt;Chris Swithinbank&lt;/a&gt;, who’s a huge Astro docs contributor and also contributor of code for the Astro docs application itself, replied to let me know that what they’re doing for code blocks in the Astro docs is even simpler than that – it’s called &lt;a href=&quot;https://github.com/expressive-code/expressive-code&quot;&gt;Expressive Code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/expressive-code/expressive-code&quot;&gt;Expressive Code&lt;/a&gt; is really all about code blocks, or syntax highlighting. And it just so happens most or all of the contributors are Astro contributors (including Chris!). This is great news because one of the packages available in Expressive Code is &lt;a href=&quot;https://github.com/expressive-code/expressive-code/blob/main/packages/astro-expressive-code/README.md&quot;&gt;astro-expressive-code&lt;/a&gt;, which is an Astro specific Expressive Code integration. It’s so easy that all you have to do is install that one package  in your Astro site and you’re in business.&lt;/p&gt;
&lt;p&gt;I installed it using the Astro CLI as recommended in the &lt;a href=&quot;https://github.com/expressive-code/expressive-code/blob/main/packages/astro-expressive-code/README.md&quot;&gt;astro-expressive-code README&lt;/a&gt; with the command &lt;code&gt;npx astro add astro-expressive-code&lt;/code&gt; (since I’m using npm). After that, I did absolutely nothing except edit all my posts with code blocks to add titles to any code blocks that I wanted to list file names for. Now my code blocks look like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/AScottWillseyCodeBlock-2F322CD2-12B1-4319-B68C-D29D23B308B2.jpg&quot;&gt;&lt;img alt=&quot;A Scott Willsey code block using astro-expressive-code&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1832&quot; height=&quot;658&quot; src=&quot;https://scottwillsey.com/_astro/AScottWillseyCodeBlock-2F322CD2-12B1-4319-B68C-D29D23B308B2.DNXsNKzw_1vBu0E.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Right now I’m just using the default Shiki GitHub theme. I haven’t customized the look at all. While they do look fine as is, I will customize the look more when I have time.&lt;/p&gt;
&lt;p&gt;If you use Astro and you ever write about code, you should definitely check out &lt;a href=&quot;https://github.com/expressive-code/expressive-code&quot;&gt;Expressive Code&lt;/a&gt; and its &lt;a href=&quot;https://github.com/expressive-code/expressive-code/blob/main/packages/astro-expressive-code/README.md&quot;&gt;astro-expressive-code&lt;/a&gt; package.&lt;/p&gt;</content:encoded><summary>Create more compelling code blocks and syntax highlighting in Astro with Expressive Code and astro-expressive-code.</summary></item><item><title>Some Tags</title><link>https://scottwillsey.com/some-tags</link><guid isPermaLink="true">https://scottwillsey.com/some-tags</guid><description>Thanks to the brilliance of those who came before me, I now have tags on my site.</description><pubDate>Tue, 08 Aug 2023 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;One of my site to-do items for a while now has been doing something with the keywords I add to each post’s front matter. Content in Astro can be different variations of Markdown, and front matter is a YAML section with metadata about the content, such as title, description, publish date, or really whatever you want to put in there. One of the things I add there is a YAML array of keywords which are really just tags. I called them keywords, they could have been called categories, tags, topics, whatever.&lt;/p&gt;
&lt;p&gt;Here’s the YAML front matter for my last post, which was about &lt;a href=&quot;https://scottwillsey.com/podcasting-recording-software/&quot;&gt;podcasting software&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#6CB6FF&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;My Podcasting Setup - Recording Software&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;Part 2 of a series on podcasting setups and workflows. This is the software I use for recording podcasts.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;2023-08-04T09:00:00-08:00&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mac&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;podcasting-recording-software&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#6CB6FF&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;---title: &amp;#x22;My Podcasting Setup - Recording Software&amp;#x22;description: Part 2 of a series on podcasting setups and workflows. This is the software I use for recording podcasts.date: &amp;#x22;2023-08-04T09:00:00-08:00&amp;#x22;keywords: [&amp;#x22;mac&amp;#x22;, &amp;#x22;apps&amp;#x22;, &amp;#x22;podcast&amp;#x22;]slug: &amp;#x22;podcasting-recording-software&amp;#x22;---&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I thought it might be nice to add the ability to view posts associated with specific tags, to add a post-filtering option in addition to the site search. That way people could see everything I associated with “mac” or “podcast”, for example. I decided to show a subset of tags on my home page and have a tags index page that listed all of them. The tags in those tag lists would link to the specific tag’s page, with a list of posts using that tag.&lt;/p&gt;
&lt;p&gt;Thanks to others who are a lot smarter than me who’ve already done this very thing with Astro, finding excellent examples to borrow and steal from didn’t take long at all.&lt;/p&gt;
&lt;p&gt;I did a search for “astro tags” and found that the &lt;a href=&quot;https://docs.astro.build/en/getting-started/&quot;&gt;Astro documentation site&lt;/a&gt; has a tutorial that covers building a &lt;a href=&quot;https://docs.astro.build/en/tutorial/5-astro-api/3/&quot;&gt;tag index page&lt;/a&gt; as well as &lt;a href=&quot;https://docs.astro.build/en/tutorial/5-astro-api/2/&quot;&gt;individual tag pages&lt;/a&gt;, but I wanted some better examples of pulling the tags from the posts and sorting and filtering them rather than the array of tag objects used in the documentation examples.&lt;/p&gt;
&lt;p&gt;One of my search results was a post from &lt;a href=&quot;https://www.rainsberger.ca&quot;&gt;Sarah Rainsberger&lt;/a&gt; called &lt;a href=&quot;https://www.rainsberger.ca/posts/dynamic-routing-tag-pages-in-astro/&quot;&gt;Creating individual tag pages in Astro via dynamic routes&lt;/a&gt;. I know who Sarah is – she’s the lead-documentation-guru-in-chief for the Astro documentation, and she’s an amazing organizer, explainer, and community builder.&lt;/p&gt;
&lt;h2 id=&quot;tags-index-page-and-tag-cloud&quot;&gt;Tags Index Page and Tag Cloud&lt;/h2&gt;
&lt;p&gt;Sarah’s post does a great job of explaining static vs. dynamic routing, and the astro &lt;a href=&quot;https://docs.astro.build/en/reference/api-reference/#getstaticpaths&quot;&gt;&lt;code&gt;getStaticPaths()&lt;/code&gt;&lt;/a&gt; function that’s used to generate dynamic routes. First, though, she builds her &lt;code&gt;src/pages/tags/index.astro&lt;/code&gt; page which serves as her tags list page (which you can see in action &lt;a href=&quot;https://www.rainsberger.ca/tags/&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I have a slightly different approach in that I use &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/&quot;&gt;Astro Content Collections&lt;/a&gt;, which were introduced after Sarah’s blog post, rather than &lt;a href=&quot;https://docs.astro.build/en/guides/upgrade-to/v2/#removed-astrofetchcontent&quot;&gt;&lt;code&gt;Astro.fetchContent()&lt;/code&gt;&lt;/a&gt;, which she uses, which was in turn deprecated in favor of &lt;a href=&quot;https://docs.astro.build/en/guides/imports/#astroglob&quot;&gt;&lt;code&gt;Astro.glob()&lt;/code&gt;&lt;/a&gt; in Astro 2.0. For now, just think of Content Collections as another way of grabbing all associated documents, such as posts. You can still use &lt;code&gt;Astro.glob()&lt;/code&gt;. Content Collections have a few benefits that glob doesn’t, but require a little extra setup.&lt;/p&gt;
&lt;p&gt;In any event, I wound up with this for a tags index page:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/tags/index.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;TagCloud&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../components/TagCloud.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Tags - &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Tags used in posts on &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-pagefind-ignore&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;tag-cloud&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mdi:tag-multiple&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/tags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Tags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;cloud&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;TagCloud&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;showCount&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;displayNumber&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;cloud&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#800000&quot;&gt;tag-cloud&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mdi:tag-multiple&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;article data-pagefind-ignore=&quot;&quot;&gt;    &lt;span id=&quot;&quot;&gt;      &lt;h1&gt;&lt;a href=&quot;&quot;&gt;Tags&lt;/a&gt;&lt;/h1&gt;      &lt;div class=&quot;&quot;&gt;              &lt;/div&gt;    &lt;/span&gt;  &lt;/article&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Well, that’s not very exciting. I don’t do any of the cool post grabbing stuff that Sarah does here. That’s because I put all that work into an Astro component I call TagCloud. You can see that I use my TagCloud component there in my tags index page. I did this because I also wanted to show a subset of my tag cloud on my home page and on my search page. Creating an Astro component to actually display the tag cloud makes all that logic and display markup reusable.&lt;/p&gt;
&lt;p&gt;Also note that I pass two params to my TagCloud component – &lt;code&gt;showCount=&quot;true&quot;&lt;/code&gt; and &lt;code&gt;displayNumber=&quot;999&quot;&lt;/code&gt;. I’ll explain those pretty soon.&lt;/p&gt;
&lt;p&gt;HERE is where the magic happens, in &lt;code&gt;TagCloud.astro&lt;/code&gt; itself:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/components/TagCloud.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slugify&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./utilities/StringFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;flat&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;processedTags&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;reduce&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;acc&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;acc&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;] &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;pTags&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;acc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;sortedTags&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;fromEntries&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;entries&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pTags&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sortedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;},&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;showCount&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;displayNumber&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;categories&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;entries&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;processedTags&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;([&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;val&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;badge&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/tags/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;slugify&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;showCount&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;val&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;slice&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;displayNumber&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;displayNumber&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/tags/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;All Tags ... &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ph:arrow-circle-right-bold&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#6CB6FF&quot;&gt;null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;categories&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-content&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-wrap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;wrap&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;gap&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.4&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;categories&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface-menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--color-gray-800&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;text-transform&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;uppercase&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;text-decoration&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;categories&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#800000&quot;&gt;hover&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;fff&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;screen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#D30000;--2:#6CB6FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;categories&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; tag.data.keywords).flat();const processedTags = allTags.reduce((acc, tag) =&gt; {  const value = acc[tag] || 0;  const pTags = {    ...acc,    [tag]: value + 1,  };  const sortedTags = Object.fromEntries(    Object.entries(pTags).sort((a, b) =&gt; b[1] - a[1]),  );  return sortedTags;}, {});const { showCount, displayNumber } = Astro.props;---&lt;span class=&quot;&quot;&gt;  {    Object.entries(processedTags)      .map(([key, val]) =&gt; (        &lt;a class=&quot;&quot;&gt;          {key} {showCount &amp;#x26;&amp;#x26; &amp;#x60;(${val})&amp;#x60;}        &lt;/a&gt;      ))      .slice(0, displayNumber)  }  {    displayNumber &lt; 999 ? (      &lt;a href=&quot;&quot;&gt;        All Tags ...       &lt;/a&gt;    ) : null  }&lt;/span&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Ok, that’s kind of a big chunk of code, but a lot of it is html and styling. But there are a few important parts, namely all that JavaScript in the front matter regarding &lt;code&gt;allPosts&lt;/code&gt;, &lt;code&gt;allTags&lt;/code&gt;, &lt;code&gt;processedTags&lt;/code&gt;, and &lt;code&gt;sortedTags&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Basically what this does is get my posts Content Collection, get the keywords arrays from the front matter, and then create a JavaScript object of key value pairs with each tag I’ve ever used as a key, and how many times I’ve used it as its value.&lt;/p&gt;
&lt;p&gt;If you &lt;code&gt;console.log(sortedTags)&lt;/code&gt;, it looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;console.log(sortedTags)&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;astro&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;19&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;blog&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;17&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;mac&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;images&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;podcast&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;responsive&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;programming&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;automation&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;javascript&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;applescript&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;fwb&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;chatgpt&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;friendswithbrews&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;eleventy&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;hugo&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;design&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;bookmarks&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;safari&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;pagefind&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;menu&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;pagination&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;friendswithbeer&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;css&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;mastodon&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;hardware&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;writing&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;audio&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;transcription&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{ astro: 19, blog: 17, mac: 13, images: 11, podcast: 10, apps: 10, responsive: 9, programming: 8, rss: 7, automation: 6, javascript: 6, applescript: 4, fwb: 4, chatgpt: 4, friendswithbrews: 3, eleventy: 3, hugo: 2, design: 2, search: 2, bookmarks: 2, safari: 2, pagefind: 1, menu: 1, pagination: 1, friendswithbeer: 1, git: 1, css: 1, mastodon: 1, hardware: 1, writing: 1, regex: 1, audio: 1, transcription: 1 }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You may be wondering why Sarah’s tags index page creates its array of tags very
simply with this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;tags&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Set&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;apply&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tags&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; post.tags),    ),  ),];&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;And why I’m making it super complex with this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;flat&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;processedTags&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;reduce&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;acc&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;acc&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;] &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;pTags&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;acc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;sortedTags&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;fromEntries&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;entries&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pTags&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sortedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;},&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; tag.data.keywords).flat();const processedTags = allTags.reduce((acc, tag) =&gt; {  const value = acc[tag] || 0;  const pTags = {    ...acc,    [tag]: value + 1,  };  const sortedTags = Object.fromEntries(    Object.entries(pTags).sort((a, b) =&gt; b[1] - a[1]),  );  return sortedTags;}, {});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The reason is that I’m keeping count of how many times each tag is used and I’m displaying that in my tag cloud, as shown below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/TagsPage-06E42D5B-5C57-49DA-8888-49922722C7CD.jpg&quot;&gt;&lt;img alt=&quot;Tags index page tag cloud&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2180&quot; height=&quot;1004&quot; src=&quot;https://scottwillsey.com/_astro/TagsPage-06E42D5B-5C57-49DA-8888-49922722C7CD.BDPvh-LA_1nsKTV.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That’s the only reason why instead of just sticking with a simple array of tags, I am creating a JavaScript Object of key value pairs, with the tag name being the key and the number of times its used being the value.&lt;/p&gt;
&lt;p&gt;I am not clever enough nor good enough with JavaScript to have written that function. All of that JavaScript in that code block above is the work of &lt;a href=&quot;https://github.com/coding-in-public&quot;&gt;Chris Pennington&lt;/a&gt;, who has a really great YouTube channel called &lt;a href=&quot;https://www.youtube.com/@CodinginPublic&quot;&gt;Coding in Public&lt;/a&gt;. One of his videos is titled &lt;a href=&quot;https://www.youtube.com/watch?v=AP2UD0wetAI&quot;&gt;Astro Blog Course #12 - Tag cloud&lt;/a&gt;, and it’s about exactly what you think it’s about.&lt;/p&gt;
&lt;p&gt;My whole TagCloud.astro component aside from styling comes straight from his &lt;a href=&quot;https://github.com/coding-in-public/astro-blog-tutorial/blob/lesson-12/src/components/CategoryCloud.astro&quot;&gt;CategoryCloud.astro component&lt;/a&gt;, with one minor change.&lt;/p&gt;
&lt;p&gt;My minor change is the addition of a prop called &lt;code&gt;displayNumber&lt;/code&gt;. If I give it something real, like 11, it will display 11 tags plus a “All tags… ” link to the tags index page. If I give it 999, it shows all tags. On my tags index page, I call TagCloud.astro with &lt;code&gt;displayNumber=&quot;999&quot;&lt;/code&gt;, while on my site home page and my site search page, I call TagCloud.astro with &lt;code&gt;displayNumber=&quot;11&quot;&lt;/code&gt;. The result is that my tags index page looks like the picture immediately above, while my home page and search page tag clouds look like the following two images.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/IndexPageBottom-06E42D5B-5C57-49DA-8888-49922722C7CD.jpg&quot;&gt;&lt;img alt=&quot;Home page tag cloud&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2334&quot; height=&quot;1012&quot; src=&quot;https://scottwillsey.com/_astro/IndexPageBottom-06E42D5B-5C57-49DA-8888-49922722C7CD.fUHaJ7_-_16RogV.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SearchPage-06E42D5B-5C57-49DA-8888-49922722C7CD.jpg&quot;&gt;&lt;img alt=&quot;Search page tag cloud&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1988&quot; height=&quot;836&quot; src=&quot;https://scottwillsey.com/_astro/SearchPage-06E42D5B-5C57-49DA-8888-49922722C7CD.C1M2X_Xe_8uajz.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;individual-tag-pages&quot;&gt;Individual Tag Pages&lt;/h2&gt;
&lt;p&gt;The tag pages for individual tags are where dynamic routing comes in. While the tags index page is at &lt;code&gt;src/pages/tags/index.astro&lt;/code&gt;, the fact that the individual tag page are dynamically created is evident by the Astro page name: &lt;code&gt;src/pages/tags/[tag].astro&lt;/code&gt;. The brackets around the name indicate a &lt;a href=&quot;https://docs.astro.build/en/core-concepts/routing/#dynamic-routes&quot;&gt;dynamic route page&lt;/a&gt;, one that generates an actual page for each item in an array of objects. In our case, our objects are tags.&lt;/p&gt;
&lt;p&gt;As the Astro documentation on dynamic routes says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Because all routes must be determined at build time, a dynamic route must export a &lt;code&gt;getStaticPaths()&lt;/code&gt; that returns an array of objects with a &lt;code&gt;params&lt;/code&gt; property. Each of these objects will generate a corresponding route.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My &lt;code&gt;tag.astro&lt;/code&gt; page looks just like &lt;a href=&quot;https://www.rainsberger.ca/posts/dynamic-routing-tag-pages-in-astro/&quot;&gt;Sarah’s&lt;/a&gt; as far as my &lt;code&gt;getStaticPaths()&lt;/code&gt; function, because hers is perfect. Like I said, people much smarter than me have already solved this problem and documented it for others. I’m glad too, because JavaScript isn’t really something I spend hours improving my skills at. I tend to learn enough to do what I need to and then move on. Unfortunately this means that correctly expressing things in JavaScript like mapping and filtering is sometimes a struggle for me.&lt;/p&gt;
&lt;p&gt;Here’s &lt;code&gt;[tag].astro&lt;/code&gt;. It’s another long code block but here’s the full code dump anyway.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot; style=&quot;--lnWidth:3ch&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/tags/[tag].astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;postdate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../components/utilities/DateFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../components/utilities/StringFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getStaticPaths&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;({})&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;sortedPosts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Set&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;sortedPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allTags&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;filteredPosts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sortedPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;includes&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;params&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;},&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;filteredPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;params&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Posts with tag &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-pagefind-ignore&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mdi:tag&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&amp;#x3C;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/tags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;blog-post-list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aria-label&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Blog post list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;cal&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;datetime&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;postdate&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;description&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts-link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/tags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mdi:tag-plus&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; Browse all tags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface-menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;cal&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;cal&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;bold&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;description&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;posts-link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mdi:tag&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.25&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;118&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;119&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mdi:tag-plus&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;120&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;121&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;122&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; new Date(b.data.date).valueOf() - new Date(a.data.date).valueOf(),  );  const allTags = new Set();  sortedPosts.map((post) =&gt; {    post.data.keywords &amp;#x26;&amp;#x26; post.data.keywords.map((tag) =&gt; allTags.add(tag));  });  return Array.from(allTags).map((tag) =&gt; {    const filteredPosts = sortedPosts.filter((post) =&gt;      post.data.keywords.includes(tag),    );    return {      params: { tag },      props: {        posts: filteredPosts,      },    };  });}const { posts } = Astro.props;const { tag } = Astro.params;let title = tag;let description = &amp;#x22;Posts with tag &amp;#x22; + tag + &amp;#x22;.&amp;#x22;;---&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;All of that in &lt;code&gt;[tag].astro&lt;/code&gt; equates to the following individual tag view.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SingleTagPage-06E42D5B-5C57-49DA-8888-49922722C7CD.jpg&quot;&gt;&lt;img alt=&quot;Individual tag page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2684&quot; height=&quot;1422&quot; src=&quot;https://scottwillsey.com/_astro/SingleTagPage-06E42D5B-5C57-49DA-8888-49922722C7CD.miLSZNW0_Z1wn1tP.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don’t know if you’re tired of tags yet, but I’m getting there. I do like how this turned out though. I think it looks pretty good considering my horrific lack of design skills, and I like how I can implement the partial cloud on the home page and the search page, and the full tag cloud on the tags index page, all from the same &lt;code&gt;TagCloud.astro&lt;/code&gt; component.&lt;/p&gt;
&lt;h2 id=&quot;404-scott-not-found&quot;&gt;404, Scott Not Found&lt;/h2&gt;
&lt;p&gt;Oh, I also added the tag cloud along with a search field on my 404 page too.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/404-2ABF6127-2AA2-452A-B787-32D051D95FB7.jpg&quot;&gt;&lt;img alt=&quot;I can haz 404?! And TAG CLOUD?!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2994&quot; height=&quot;1812&quot; src=&quot;https://scottwillsey.com/_astro/404-2ABF6127-2AA2-452A-B787-32D051D95FB7.D3pLVZvm_Z1tgqwb.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And now I’m going to sleep, because it’s after 2 AM and I really need to be 404 myself right now.&lt;/p&gt;</content:encoded><summary>Thanks to the brilliance of those who came before me, I now have tags on my site.</summary></item><item><title>My Podcasting Setup - Recording Software</title><link>https://scottwillsey.com/podcasting-recording-software</link><guid isPermaLink="true">https://scottwillsey.com/podcasting-recording-software</guid><description>Part 2 of a series on podcasting setups and workflows. This is the software I use for recording podcasts.</description><pubDate>Fri, 04 Aug 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve talked about the &lt;a href=&quot;https://scottwillsey.com/podcasting-setup-hardware/&quot;&gt;hardware I use for podcasting&lt;/a&gt;, but what about the other tools of the trade? Obviously the first step to creating a podcast is to record one, and in my case, that’s all about software.&lt;/p&gt;
&lt;h2 id=&quot;the-company-you-keep&quot;&gt;The Company You Keep&lt;/h2&gt;
&lt;p&gt;If there’s one name podcasters who use Macs tend to be very familiar with, it’s &lt;a href=&quot;https://rogueamoeba.com&quot;&gt;Rogue Amoeba&lt;/a&gt;. I don’t know if Rogue Amoeba set out to be the go-to people for podcasting on the Mac, but they’ve certainly achieved it. For me, all of their software is indispensable, but there’s one application in particular that you pretty much have to have – Audio Hijack.&lt;/p&gt;
&lt;h3 id=&quot;audio-hijack&quot;&gt;Audio Hijack&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://rogueamoeba.com/audiohijack/&quot;&gt;Audio Hijack&lt;/a&gt; bills itself as the “Record Any Audio” application, and that’s exactly what it is. If there’s an app on your Mac that makes noise, Audio Hijack can record it.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The beauty of Audio Hijack is that it sets up audio recording chains that can include effects, noise removal, peak limiting, and more, and it allows for granular control over whether audio sources get combined into a track or each record their own separate tracks. Each specific setup like this can be saved as a session, so you can always have a session appropriate to whatever kind of recording you want to do.&lt;/p&gt;
&lt;p&gt;For example, here’s my &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; Audio Hijack session.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/AudioHijackFwBSession-296E143F-42B1-4413-9652-108458F4BB64.jpeg&quot;&gt;&lt;img alt=&quot;Friends with Brews Audio Hijack Session&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1042&quot; src=&quot;https://scottwillsey.com/_astro/AudioHijackFwBSession-296E143F-42B1-4413-9652-108458F4BB64.B4qB38as_Z2pWDy1.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This session records my mic, which comes in through an &lt;a href=&quot;https://www.elgato.com/us/en/p/wave-xlr&quot;&gt;Elgato Wave XLR&lt;/a&gt; interface, increases the volume, denoises, and ramps down the treble a little bit, because I have a nasally voice.&lt;/p&gt;
&lt;p&gt;It also records my soundboard, which is provided courtesy of another Rogue Amoeba app called &lt;a href=&quot;https://rogueamoeba.com/farrago/&quot;&gt;Farrago&lt;/a&gt;, and saves that to its own track.&lt;/p&gt;
&lt;p&gt;Finally, it records whatever VOIP app I’m using for the podcast as a backup recording of my co-host(s). Peter and I use FaceTime to talk to each other for &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt;, unless our friend Adam Bell is on, and then we use Zoom.&lt;/p&gt;
&lt;p&gt;The VOIP call recording is strictly a backup. We each record our own end locally for the best sound and I combine those tracks in my editor, a process I’ll describe in a separate post sometime soon.&lt;/p&gt;
&lt;p&gt;Audio Hijack is very versatile in terms of output file format and quality, and also in terms of file naming.&lt;/p&gt;
&lt;p&gt;As I mentioned, you can save recording configurations as sessions. Here are all of my currently saved Audio Hijack sessions for recording various podcasts and Mac apps. &lt;a href=&quot;https://friendswithbrews.com/18/&quot;&gt;Episode 18&lt;/a&gt; of Friends with Brews wasn’t really the last time Adam was on the podcast and we used zoom (it was &lt;a href=&quot;https://friendswithbrews.com/39/&quot;&gt;episode 39&lt;/a&gt;, I think) but apparently I forgot to rename that session. Anyway, you get the idea.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/AudioHijackSessionsList-22BCE0E0-6ECE-417D-B0F0-20DDEACD35B4.jpeg&quot;&gt;&lt;img alt=&quot;Audio Hijack Session List&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1616&quot; height=&quot;1368&quot; src=&quot;https://scottwillsey.com/_astro/AudioHijackSessionsList-22BCE0E0-6ECE-417D-B0F0-20DDEACD35B4.z8varxyO_ZoVsPs.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;farrago&quot;&gt;Farrago&lt;/h3&gt;
&lt;p&gt;I mentioned Farrago earlier. &lt;a href=&quot;https://rogueamoeba.com/farrago/&quot;&gt;Farrago&lt;/a&gt; is an amazing soundboard application that lets you store, perform minor edits on, and trigger audio sound clips – in other words, it’s a soundboard!&lt;/p&gt;
&lt;p&gt;Farrago is how I play the “Friends? With BREWS?!” clip at the beginning of every podcast, as well as the “Hi, Peter!” and other clips that I like to annoy people with during various podcasts. I have a TON of Farrago sets with sounds from all kinds of stuff.&lt;/p&gt;
&lt;p&gt;Vic Hudson and I used to do tv show related podcasts for &lt;a href=&quot;https://bubblesort.show/bubblesort-tv/&quot;&gt;BubbleSort TV&lt;/a&gt;, and those sound clips came in super handy. We’d usually set up sections of the podcast by playing clips from specific scenes, which really added to the shows. It also means they’re inserted live into the recordings (although we made sure they were on their own tracks for easier audio leveling and editing reasons) so they wouldn’t have to be edited in later, AND so the co-host could hear them and we’d both be on the same page about the conversation to follow.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FarragoSets-96F9B286-8CC9-4BAD-9CAE-9DCBCA223A29.jpeg&quot;&gt;&lt;img alt=&quot;Farrago Sound Sets&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2784&quot; height=&quot;1640&quot; src=&quot;https://scottwillsey.com/_astro/FarragoSets-96F9B286-8CC9-4BAD-9CAE-9DCBCA223A29.CLT1-RLa_2uBlAt.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By the way, if you guessed that I recorded every single one of those tv show and movie clips using Audio Hijack, you’re correct!&lt;/p&gt;
&lt;h3 id=&quot;loopback&quot;&gt;Loopback&lt;/h3&gt;
&lt;p&gt;“But Scott!” you say. “Just because you’re playing a sound clip in Farrago on your Mac doesn’t mean your cohosts can automatically hear them, does it?!?” Great question. The answer is no. No, it does not. Enter &lt;a href=&quot;https://rogueamoeba.com/loopback/&quot;&gt;Loopback&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Because you’re such a doggone great guesser, maybe you surmised that Loopback is Yet. Another. App. By. Rogue Amoeba.&lt;/p&gt;
&lt;p&gt;YES! IT IS! And it’s amazing, so back off! It’s not my fault they make all the best podcasting and audio routing and recording related software for the Mac!&lt;/p&gt;
&lt;p&gt;Loopback does a lot of things, but simply put, it lets you combine audio sources into one or to pass audio from one application to another. The first use case is how my co-hosts can hear my soundboard – I have a Loopback device that combines my mic with Farrago. I can then set THAT as the input to my VOIP app of choice, such as FaceTime or Zoom or Skype, and then everyone on the other end(s) of the call can hear my soundboard coming from me exactly the same as they can hear me talking.&lt;/p&gt;
&lt;p&gt;This Loopback device looks a lot like this – in fact, exactly like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/LoopbackMicAndFarrago-A8783B3D-3C98-4FCC-BDAF-C4AB24B2D8FC.jpeg&quot;&gt;&lt;img alt=&quot;Loopback Device with Mic and Farrago&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2400&quot; height=&quot;1306&quot; src=&quot;https://scottwillsey.com/_astro/LoopbackMicAndFarrago-A8783B3D-3C98-4FCC-BDAF-C4AB24B2D8FC.MzzMYIuy_Za3dkP.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Usually, even though each app can have its own inputs and outputs separate from the system settings, I just set my system settings to the output I want (my Elgato Wave XLR, which my podcasting headphones are plugged into) and the input that I want (my Loopback input source that combines my mic and Farrago).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SoundSource-25F30062-97B2-48F2-A923-EFA82FAC2FD8.jpg&quot;&gt;&lt;img alt=&quot;SoundSource System Audio Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1306&quot; height=&quot;868&quot; src=&quot;https://scottwillsey.com/_astro/SoundSource-25F30062-97B2-48F2-A923-EFA82FAC2FD8.Ds7Yfiuw_2ihnfg.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then I set my VOIP app de jour to use system settings for input and output.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FaceTimeVideoAudioSettings-25F30062-97B2-48F2-A923-EFA82FAC2FD8.jpeg&quot;&gt;&lt;img alt=&quot;FaceTime Video and Audio Settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1468&quot; height=&quot;1244&quot; src=&quot;https://scottwillsey.com/_astro/FaceTimeVideoAudioSettings-25F30062-97B2-48F2-A923-EFA82FAC2FD8.DtW7Z72__yu3XO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;and-so&quot;&gt;And, So&lt;/h2&gt;
&lt;p&gt;And THAT, my friends, is over 1000 words on software that I use to record the podcast. It’s not complete, because I have a few helper utilities that prepare the way, as John Siracusa might say, but I’ll save those for another post.&lt;/p&gt;
&lt;p&gt;So topics you have to look forward to in this series in the future are helper utility apps that prepare the way for recording, apps I use during the editing process, what exactly my editing process actually entails, and finally, how I get all that published and ready for YOU to listen to, in the case of Friends with Brews especially.&lt;/p&gt;
&lt;p&gt;You can bet on it. But maybe you shouldn’t. Just saying. Never bet unless the outcome is already certain. And then always only bet a dollar.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;It can actually even record apps that don’t make noise, but that’s probably an exercise best reserved for the metaphysicians of the world. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Part 2 of a series on podcasting setups and workflows. This is the software I use for recording podcasts.</summary></item><item><title>The Push I Needed to Implement Link Posts</title><link>https://scottwillsey.com/link-posts</link><guid isPermaLink="true">https://scottwillsey.com/link-posts</guid><description>Thanks entirely to Tiffany White creating a GitHub issue on my site repo, I finally implemented something that&apos;s been on my site to-do list for some time, but that I&apos;ve never gotten around to actually doing until now: link posts.</description><pubDate>Sun, 30 Jul 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thanks entirely to Tiffany White, I finally implemented something that’s been on my site to-do list for some time, but that I’ve never gotten around to actually doing until now: link posts.&lt;/p&gt;
&lt;p&gt;You’ve seen link posts before, certainly so if you read a lot of Mac related blogs like &lt;a href=&quot;https://daringfireball.net&quot;&gt;Daring Fireball&lt;/a&gt;, &lt;a href=&quot;https://sixcolors.com&quot;&gt;SixColors&lt;/a&gt;, or &lt;a href=&quot;https://www.macstories.net&quot;&gt;MacStories&lt;/a&gt;. The idea is the title of the post links to an article on another site, and then you add some commentary and maybe quote part of the article in your post.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/SixColorsLinkPost-EDA8EA55-4DF2-41CD-8A78-88C1277FBDA4.jpg&quot;&gt;&lt;img alt=&quot;A link post on SixColors&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2546&quot; height=&quot;824&quot; src=&quot;https://scottwillsey.com/_astro/SixColorsLinkPost-EDA8EA55-4DF2-41CD-8A78-88C1277FBDA4.euWd8Yra_7bbT4.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/twhite96&quot;&gt;Tiffany&lt;/a&gt; created an issue on my site repo asking if I’d setup link post support in Astro yet. I had it on my to-do list, namely in my Obsidian kanban board for this site, but I hadn’t done it yet because I haven’t really wanted to link to too many external articles here. But Tiffany creating an issue for me gave me the motivation to figure out how I would do it.&lt;/p&gt;
&lt;h2 id=&quot;adding-the-url-link&quot;&gt;Adding the Url Link&lt;/h2&gt;
&lt;p&gt;In order to add the URL that the post title should link to, I decided to add a front matter item called &lt;strong&gt;link&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#6CB6FF&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;How to use Raycast and how it compares to Spotlight and Alfred&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;Raycast compared to Spotlight and Alfred.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;2023-07-28T09:00:00-08:00&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://www.theverge.com/23170431/raycast-how-to-macos-search-extensions-alfred-spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mac&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;utility&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;alfred&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;spotlight&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;raycast&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#6CB6FF&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;---title: &amp;#x22;How to use Raycast and how it compares to Spotlight and Alfred&amp;#x22;description: Raycast compared to Spotlight and Alfred.date: &amp;#x22;2023-07-28T09:00:00-08:00&amp;#x22;link: &amp;#x22;https://www.theverge.com/23170431/raycast-how-to-macos-search-extensions-alfred-spotlight&amp;#x22;keywords: [&amp;#x22;mac&amp;#x22;, &amp;#x22;raycast&amp;#x22;, &amp;#x22;apps&amp;#x22;, &amp;#x22;utility&amp;#x22;, &amp;#x22;alfred&amp;#x22;, &amp;#x22;spotlight&amp;#x22;]slug: &amp;#x22;raycast&amp;#x22;---&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;adding-the-link-to-the-collection-schema&quot;&gt;Adding the Link to the Collection Schema&lt;/h2&gt;
&lt;p&gt;Because I’m using &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/&quot;&gt;Astro Content Collections&lt;/a&gt;, I also needed to add this to my &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/#defining-a-collection-schema&quot;&gt;collection schema&lt;/a&gt;. Not all posts will have a link front matter item, so it needs to be optional.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/content/config.ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;ts&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;defineCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;collections&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;defineCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;optional&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;transform&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;keywords&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; new Date(str)),      keywords: z.string().array(),    }),  }),};&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/#defining-datatypes-with-zod&quot;&gt;Zod&lt;/a&gt; allows for optional entries, so links is defined as a &lt;code&gt;z.string().optional()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;the-astro-code-for-link-post-titles&quot;&gt;The Astro Code for Link Post Titles&lt;/h2&gt;
&lt;p&gt;The rest of the work is done in a new component for creating the blog post title called PostTitle.astro.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/components/PostTitle.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./utilities/StringFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;link&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;link&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ion:ios-link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-icon&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  {post.data.link ?  : &amp;#x22;&amp;#x22;}  {titleCase(post.data.title)}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I check for the existence of the link front matter value in two places: one for creating the href for the post title, and the other to decide whether or not to show the link icon next to the post title indicating that this is a link post.&lt;/p&gt;
&lt;p&gt;If post.data.link exists, I use that as the href for the title link, otherwise I use the url of my blog post as the href so that my blog post links to itself as usual.&lt;/p&gt;
&lt;p&gt;Now in my Post.astro component which creates the blog post layout, I call my PostTitle component instead of just creating the title in Post.astro itself.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/components/Post.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;CollectionEntry&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;postdate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;PostTitle&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./PostTitle.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#F69D50&quot;&gt;Props&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#F69D50&quot;&gt;CollectionEntry&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;PostTitle&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bi:calendar2-week-fill&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;datetime&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;postdate&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;;}const { post } = Astro.props;const { Content } = await post.render();---&lt;article&gt;  &lt;header&gt;    &lt;h1&gt;          &lt;/h1&gt;    &lt;div class=&quot;&quot;&gt;            &lt;time datetime=&quot;&quot;&gt;        &lt;a          href={new URL(            path.join(config.get(&amp;#x22;posts.path&amp;#x22;), post.slug),            config.get(&amp;#x22;url&amp;#x22;),          )}        &gt;          {postdate(post.data.date)}              &lt;/time&gt;    &lt;/div&gt;  &lt;/header&gt;  &lt;/article&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is the result:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MyLinkPost-1AE68B36-13DD-4184-B02D-758980D93F16.jpg&quot;&gt;&lt;img alt=&quot;A link post on scottwillsey.com&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2070&quot; height=&quot;632&quot; src=&quot;https://scottwillsey.com/_astro/MyLinkPost-1AE68B36-13DD-4184-B02D-758980D93F16.BhKXSo8Q_Z11U7Eq.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before implementing PostTitle to create link post titles when appropriate, I just created the title directly in Post.astro with the following:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;&amp;#x3C;!-- old way of creating post title --&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;a  href={new URL(    path.join(config.get(&amp;#x22;posts.path&amp;#x22;), post.slug),    config.get(&amp;#x22;url&amp;#x22;),  )}&gt;  {titleCase(post.data.title)}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;As you can see, it’s just a subset of what’s now in PostTitle.astro, namely just the portion that assumes the post title should just link back to the post itself. But you can see how easy it was to go from that to the new PostTitle component that can handle both link posts and regular posts.&lt;/p&gt;
&lt;h2 id=&quot;improvements&quot;&gt;Improvements&lt;/h2&gt;
&lt;p&gt;That’s it! There are still some improvements to be made. Besides just showing the link icon next to the title of a link post, I probably want to change the color of the title slightly and maybe change the post background color very subtly to indicate that it’s not just the usual site post.&lt;/p&gt;
&lt;p&gt;I also plan to make quote sections a little more stylish by adding some nice quote marks around them to offset them just a little bit more than they already are.&lt;/p&gt;</content:encoded><summary>Thanks entirely to Tiffany White creating a GitHub issue on my site repo, I finally implemented something that&apos;s been on my site to-do list for some time, but that I&apos;ve never gotten around to actually doing until now: link posts.</summary></item><item><title>How to use Raycast and how it compares to Spotlight and Alfred</title><link>https://scottwillsey.com/raycast</link><guid isPermaLink="true">https://scottwillsey.com/raycast</guid><description>Raycast compared to Spotlight and Alfred.</description><pubDate>Fri, 28 Jul 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m linking to a year-old article on The Verge because I just started using Raycast today. Prior to this, I was using Alfred. I was leery of Raycast because of the subscription model for pro features as well as concern over privacy issues, but it incorporates so much of what I was using other menubar apps for in addition to Alfred that it won me over in less than an hour of testing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Typing Window into Raycast gives you a whole host of commands that let you manage the shape and size of the app you’re currently using. You can maximize it, set it to cover the left half of the screen, make it smaller, and more. There’s also a built-in notes app for jotting down quick thoughts into a floating window. There’s even a command built into Raycast that makes a shower of confetti appear on your screen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was a big one for me. I have tried several different window managers and JUST switched from Lasso to Moom yesterday before discovering today that I could customize Raycast’s window functions to do all this for me in a much nicer way.&lt;/p&gt;
&lt;p&gt;So far, I’m sold on Raycast.&lt;/p&gt;</content:encoded><summary>Raycast compared to Spotlight and Alfred.</summary></item><item><title>My Podcasting Setup – the Hardware</title><link>https://scottwillsey.com/podcasting-setup-hardware</link><guid isPermaLink="true">https://scottwillsey.com/podcasting-setup-hardware</guid><description>Part 1 of a series on podcasting setups and workflows. This is the hardware I use for podcasting.</description><pubDate>Tue, 25 Jul 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My friend Donnie Adams asked me on Mastodon if I’ve ever written anything about my podcasting setup and recording and editing workflow. The answer is… I don’t think so. Even if I did, whatever I wrote is out of date and not online anymore anyway. So in 2023, here’s my basic podcasting setup hardware.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/macsetup-7780B721-09D1-44CC-82B1-E083D8F4A7C9.jpg&quot;&gt;&lt;img alt=&quot;My computer desk with MacBook Pro, Studio Monitor, and accessories&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1100&quot; src=&quot;https://scottwillsey.com/_astro/macsetup-7780B721-09D1-44CC-82B1-E083D8F4A7C9.Bzxut4fx_Z2bL2NT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;mic&quot;&gt;Mic&lt;/h2&gt;
&lt;p&gt;Mics are very subjective, and a mic that works well for one voice might not work well for others. In addition, the type of mic you get should also suit your recording environment. Many a relatively inexpensive condenser mic has been the go-to mic de jour for beginning podcasters, and condensers are not good for noisy environments. You need a quiet, non-echo-ey room for a condenser mic.&lt;/p&gt;
&lt;p&gt;My mic is the &lt;a href=&quot;https://www.shure.com/en-US/products/microphones/beta_87a?variant=BETA87A&quot;&gt;Shure Beta 87A&lt;/a&gt;. I like the fact that it has the benefits of a condenser mic while also having good drop-off so that it doesn’t pick up every spec of dust hitting something somewhere in outer space.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ShureBeta87A-7780B721-09D1-44CC-82B1-E083D8F4A7C9.jpeg&quot;&gt;&lt;img alt=&quot;My Shure Beta 87A&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1328&quot; src=&quot;https://scottwillsey.com/_astro/ShureBeta87A-7780B721-09D1-44CC-82B1-E083D8F4A7C9.BNhpxV5u_ZnlPXF.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Personally I don’t recommend USB mics and I don’t recommend most of the mics marketed towards podcasters. Don’t get a Yeti. Don’t get a Snowball. Don’t get a Rode Podcaster or Procaster.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Regardless of what mic you use, learn how it works in terms of proximity effect and positioning, use a pop filter and preferably a boom arm, and don’t bump it or move it while recording. Also find a way to mute the mic for when you need to clear your throat or make other noises. Depending on who’s doing your editing, you may find all that in the episode if you’re not careful.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;mic-stand&quot;&gt;Mic Stand&lt;/h2&gt;
&lt;p&gt;The best stand for a mic is a boom arm, which keeps the mic off the desk, isolates it from bumps and vibrations, and makes it easy to position where you need it to get the best sound for your recording.&lt;/p&gt;
&lt;p&gt;I think I’m currently using an &lt;a href=&quot;https://www.amazon.com/gp/product/B07CN2C93T/&quot;&gt;Innogear mic stand&lt;/a&gt;. I’m not sure because I ordered a couple around the same time, one for me and one for my daughter. This is the nicer looking of the two in my order history, so that’s the one I’ll point out.&lt;/p&gt;
&lt;p&gt;In the past I’ve had some bigger, heavier duty ones, but anything that can hold a 3 lbs or so will be fine.&lt;/p&gt;
&lt;h2 id=&quot;audio-interface&quot;&gt;Audio Interface&lt;/h2&gt;
&lt;p&gt;If you’re using an XLR mic and not a USB one, which is my recommendation, you’ll need an audio interface. Believe it or not, for podcasting or streaming, I’m not going to recommend some traditional interface with lots of knobs and features. I’m recommending the relatively inexpensive &lt;a href=&quot;https://www.elgato.com/us/en/p/wave-xlr&quot;&gt;Elgato Wave XLR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With a capacitive touch-to-mute function, plenty of gain, software settings including clipping prevention and other effects, this is a great value for the price. Previously I used a &lt;a href=&quot;https://tascam.com/us/product/us-2x2hr/top&quot;&gt;Tascam US-2x2&lt;/a&gt;, and I can’t be happier that I ditched it for the Elgato. It’s just nicer to use for podcasting and has plenty of clean gain.&lt;/p&gt;
&lt;p&gt;If you do in-person recording with a co-host, you may need an interface with multiple mic inputs. If not, the Elgato Wave XLR is perfect for podcasting.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/ElgatoWaveXLR-7780B721-09D1-44CC-82B1-E083D8F4A7C9.jpeg&quot;&gt;&lt;img alt=&quot;My Elgato Wave XLR audio interface&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1328&quot; src=&quot;https://scottwillsey.com/_astro/ElgatoWaveXLR-7780B721-09D1-44CC-82B1-E083D8F4A7C9.D_CNnDDE_Z1ANiOI.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;computer&quot;&gt;Computer&lt;/h2&gt;
&lt;p&gt;My computer is a 14” 2021 MacBook Pro M1 Pro with 16 GB of RAM, a 1TB SSD, 10 core CPU, and 16 core GPU. Those memory, SSD, and CPU/GPU specs are the absolute minimum I would ever go with, but for the money this is by far the most amazing computer I’ve ever owned. It eats giant number-crunching chores for breakfast and never gets hot. The only time I can warm it up even remotely is when generating transcripts of podcast episodes with &lt;a href=&quot;https://goodsnooze.gumroad.com/l/macwhisper&quot;&gt;MacWhisper&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/mbp-7782B4DE-B770-4466-8734-30E663073CFA.jpg&quot;&gt;&lt;img alt=&quot;My 14&amp;quot; 2021 MacBook Pro M1 Pro&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1328&quot; src=&quot;https://scottwillsey.com/_astro/mbp-7782B4DE-B770-4466-8734-30E663073CFA.DCAAiY4N_DMOFo.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I have 5 or 6 tracks of audio in Logic Pro, all split up with silences stripped, it can get really slow to respond to selections and movements, especially for longer episodes. I attribute this to the 16GB of RAM. Previously I had 32GB in my iMac, but that was because I could add and remove RAM with ease. That’s obviously not the case with the MacBook Pro, so go for as much as you can afford.&lt;/p&gt;
&lt;p&gt;I absolutely love the 14” form factor, by the way. I was tempted to go larger but this Mac is the nicest combination of size and utility I’ve ever had in a laptop. You get very good edge to edge use of the screen, it’s high resolution, and it has the most beautiful monitor Apple makes, in my opinion. It’s simply lovely to use for hours on end.&lt;/p&gt;
&lt;h2 id=&quot;monitor&quot;&gt;Monitor&lt;/h2&gt;
&lt;p&gt;My external monitor is the &lt;a href=&quot;https://www.apple.com/studio-display/&quot;&gt;Apple Studio Display&lt;/a&gt;. There’s not much to say about it. It’s beautiful and big and it hangs on an &lt;a href=&quot;https://www.amazon.com/gp/product/B00FE2NVV4/&quot;&gt;Ergotech Heavy Duty Freedom Arm&lt;/a&gt; VESA mount.&lt;/p&gt;
&lt;p&gt;Before the current MacBook Pro, I had a 5k 27” iMac and this display is very much like that one except it has more usable area and it doesn’t have the huge chin and the giant foot hanging off it. I had it mounted on the same VESA arm the Studio Display is on, but the Studio Display is lighter and doesn’t jiggle when I type like the iMac wanted to do sometimes.&lt;/p&gt;
&lt;p&gt;Look, I don’t know why PCs continue to have such horrendous monitors (especially the built-in laptop screens) and trick people into thinking 4k is amazing, but the 5k Apple Studio Display quality is the minimum I’ll accept for an external monitor.&lt;/p&gt;
&lt;h2 id=&quot;keyboard&quot;&gt;Keyboard&lt;/h2&gt;
&lt;p&gt;I love my clacky keyboard. It’s a &lt;a href=&quot;https://www.amazon.com/gp/product/B07YB32H52/&quot;&gt;Keychron K2 wireless&lt;/a&gt; (but I run it wired) with an &lt;a href=&quot;https://drop.com/buy/artifact-bloom-series-keycap-set-ocean-wave&quot;&gt;Artifact Bloom Series Ocean Wave Keycap Set&lt;/a&gt; from Drop.com. I have some other custom keycaps but I love the blue of these, especially with the keyboard set to a light blue backlight.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/KeychronK2-21CDCD23-642A-4062-A506-DBD63D7032B7.jpeg&quot;&gt;&lt;img alt=&quot;My Keychron K2 with Ocean Wave keycap set&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1328&quot; src=&quot;https://scottwillsey.com/_astro/KeychronK2-21CDCD23-642A-4062-A506-DBD63D7032B7.C2roIZbf_sCEpW.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;mouse-and-trackpad&quot;&gt;Mouse and Trackpad&lt;/h2&gt;
&lt;p&gt;It’s really important to stress this – you don’t have to use the horrible Apple mouse. Yes, yes, I know, and I tried to like it too. But it’s ergonomically disastrous and it’s functionally stupid.&lt;/p&gt;
&lt;p&gt;My mouse is the &lt;a href=&quot;https://www.logitech.com/en-us/products/mice/m720-triathlon.910-004790.html?crid=7&quot;&gt;Logitech M720 Triathlon&lt;/a&gt; bluetooth mouse, and I love it.&lt;/p&gt;
&lt;p&gt;In order to keep the ability to use macOS gestures, I also have an &lt;a href=&quot;https://www.apple.com/us-edu/shop/product/MMMP3AM/A/magic-trackpad-black-multi-touch-surface?fnode=673fa3de886cdb2c786d5b7b4066f2d790222ddf4d65baf3f306bf608253036056a45c91b4e40c6cddead8c8040a63cb7a3fc2c02ad4c975905051402e8357e539c7edf707b73a03713911ee1e847d7b68d928dc81704421d5825a4303a90a21&quot;&gt;Apple Magic Trackpad&lt;/a&gt; in white, and I love that too.&lt;/p&gt;
&lt;p&gt;The mouse sits to the right of the keyboard and the trackpad to the left.&lt;/p&gt;
&lt;h2 id=&quot;usbthunderbolt-hub&quot;&gt;USB/Thunderbolt Hub&lt;/h2&gt;
&lt;p&gt;Docking the Mac and having it connect to all my accessories is simple. I have the &lt;a href=&quot;https://www.caldigit.com/thunderbolt-4-element-hub/&quot;&gt;CalDigit Thunderbolt 4 Element Hub&lt;/a&gt;. It’s got all the bandwidth needed for the Apple Studio Display with 4 Thunderbolt 4/USB4 ports and 4 USB-A ports. The same single connector that connects all my devices to my MacBook Pro also powers the computer so I don’t even have to bust out the MagSafe.&lt;/p&gt;
&lt;p&gt;For the price, I think it’s one of the best out there. You could get a &lt;a href=&quot;https://www.caldigit.com/thunderbolt-station-4/&quot;&gt;TS4&lt;/a&gt; if you really want to go nuts, but I couldn’t quite justify it.&lt;/p&gt;
&lt;h2 id=&quot;standing-desk&quot;&gt;Standing Desk&lt;/h2&gt;
&lt;p&gt;My standing desk is a &lt;a href=&quot;https://www.amazon.com/Flexispot-Standing-Height-Adjustable-Electric/dp/B08XPZ77HP/&quot;&gt;FLEXISPOT 55 x 28 Inches Standing Desk&lt;/a&gt; with electrical height adjustment motor. It’s black, it has lots of space, and it’s clean underneath which allows easy mounting of hub mounts and cable management items. I do use it in standing configuration quite often, and almost always while podcasting.&lt;/p&gt;
&lt;h2 id=&quot;thats-all-folks&quot;&gt;That’s All, Folks&lt;/h2&gt;
&lt;p&gt;That’s pretty much it for my hardware. Next time I’ll get into software, and then later we can talk about workflows, editing processes, and other things that will help make your podcast excellent.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;That would be quite a feat since sound doesn’t travel in space. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;The Rode Podcaster and Procaster look tempting, but they have really muddy midrange. For voices like mine, they’re the absolute worst mic for way more money than is reasonable. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;If YOU are the editor, there’s no excuse for not editing that out. Anything that bothers you will definitely bother others, and a lot of things that don’t bother you will bother others. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Part 1 of a series on podcasting setups and workflows. This is the hardware I use for podcasting.</summary></item><item><title>Fastmarks and Safari Bookmark Descriptions</title><link>https://scottwillsey.com/fastmarks</link><guid isPermaLink="true">https://scottwillsey.com/fastmarks</guid><description>Fastmarks and Safari bookmark descriptions are a poweruser bookmark search combination supreme.</description><pubDate>Mon, 17 Jul 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my &lt;a href=&quot;https://scottwillsey.com/safari-bookmarks/&quot;&gt;last post&lt;/a&gt;, I talked about the bizarre world of Safari bookmark descriptions and how to edit them, and I justified this weird tangent on my part by the fact that I want to use &lt;a href=&quot;https://retina.studio/fastmarks/&quot;&gt;Fastmarks&lt;/a&gt; for searching for and opening bookmarks.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://retina.studio/fastmarks/&quot;&gt;Fastmarks&lt;/a&gt; is a blazing fast, keyboard shortcut driven utility for searching bookmarks. And it’s stupendously quicker than accessing bookmarks any other way I’ve tried, including online services, even with integrated plugins and apps.&lt;/p&gt;
&lt;p&gt;The problem I had though was that, as I mentioned last time, I intended to pseudo-tag my bookmarks by putting keywords in the bookmark descriptions. &lt;a href=&quot;https://discussions.apple.com/thread/252322786&quot;&gt;Safari supports bookmark descriptions&lt;/a&gt;, although it does its best to hide them. Sadly, I discovered that Fastmarks doesn’t use description data for searching bookmarks.&lt;/p&gt;
&lt;p&gt;At least, it didn’t. Until I emailed the Fastmarks developer, Tyler Hall of &lt;a href=&quot;https://retina.studio&quot;&gt;Retina Studio&lt;/a&gt;, who promptly sent me a test build with descriptions indexed in Fastmarks along with the previously searched bookmark title and URL.&lt;/p&gt;
&lt;p&gt;It’s glorious.&lt;/p&gt;
&lt;p&gt;Now I can edit bookmark descriptions and throw some keywords in at the end, like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BookmarkDescriptionKeywords-F9B6B9AE-1A28-4991-AE4F-65E3AAEE38B4.jpg&quot;&gt;&lt;img alt=&quot;Safari bookmark description with my keywords added&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1016&quot; height=&quot;296&quot; src=&quot;https://scottwillsey.com/_astro/BookmarkDescriptionKeywords-F9B6B9AE-1A28-4991-AE4F-65E3AAEE38B4.BwRWeFMf_IENfB.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And searching for any of those keywords will bring up the bookmark in my Fastmarks search results.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FastmarksSearch-F9B6B9AE-1A28-4991-AE4F-65E3AAEE38B4.jpg&quot;&gt;&lt;img alt=&quot;Fastmarks search for a keyword&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1242&quot; height=&quot;1356&quot; src=&quot;https://scottwillsey.com/_astro/FastmarksSearch-F9B6B9AE-1A28-4991-AE4F-65E3AAEE38B4.DeYJ1qJl_Z1F05GI.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By the way, not only is Tyler clearly a superior human based upon the utilities he codes, he also was super open and responsive to the idea of adding descriptions to the Fastmarks search index. Once again, an indie Mac developer shows what makes the Mac great - people who care about the platform and about user experience.&lt;/p&gt;</content:encoded><summary>Fastmarks and Safari bookmark descriptions are a poweruser bookmark search combination supreme.</summary></item><item><title>Editing Safari Bookmark Descriptions in macOS</title><link>https://scottwillsey.com/safari-bookmarks</link><guid isPermaLink="true">https://scottwillsey.com/safari-bookmarks</guid><description>Editing Safari bookmark descriptions and the (more interesting) backstory of why I stumbled across how to do it.</description><pubDate>Tue, 11 Jul 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday I learned about a really cool way to edit Safari bookmark descriptions in macOS. I understand this immediately opens up questions like “why would you want to?” and “why are you even using Safari bookmarks at all?”. I will answer those questions, but first let me show you how to edit Safari bookmark descriptions. &lt;span role=&quot;img&quot; aria-label=&quot;slightly smiling face&quot;&gt;🙂&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;When you think of editing Safari bookmarks, you may immediately think of going to the Bookmarks menu and choosing “Edit Bookmarks” (or typing the Opt-Cmd-B keyboard shortcut to do the same thing). I did too, but this won’t let you edit bookmark descriptions. It will only let you edit bookmark names and URLs, as you can see in the image below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BookmarksEditWindow-80E4D6AB-68F2-42A1-BBD7-E29E714A4987.jpg&quot;&gt;&lt;img alt=&quot;Bookmarks Editor View&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3024&quot; height=&quot;1964&quot; src=&quot;https://scottwillsey.com/_astro/BookmarksEditWindow-80E4D6AB-68F2-42A1-BBD7-E29E714A4987.zGmaiV-A_1iuVTL.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Instead, use the View menu and choose “Show Bookmarks in Sidebar” or type Ctrl-Cmd-1 to show your Safari bookmarks in normal bookmarks view. Double-click on a bookmarks folder, and you’ll see all of the bookmarks in the folder presented in mini-preview style with an image representation, name and description.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BookmarksFolderView-80E4D6AB-68F2-42A1-BBD7-E29E714A4987.jpg&quot;&gt;&lt;img alt=&quot;Bookmarks Folder Preview View&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1156&quot; height=&quot;1650&quot; src=&quot;https://scottwillsey.com/_astro/BookmarksFolderView-80E4D6AB-68F2-42A1-BBD7-E29E714A4987.CVm5UmP0_Z111vJT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here, you can right-click on any bookmark and choose to edit the name, the address, or the description.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BookmarkRightClickEditDescription-80E4D6AB-68F2-42A1-BBD7-E29E714A4987.jpg&quot;&gt;&lt;img alt=&quot;Bookmark Edit Menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1932&quot; height=&quot;1202&quot; src=&quot;https://scottwillsey.com/_astro/BookmarkRightClickEditDescription-80E4D6AB-68F2-42A1-BBD7-E29E714A4987.uhkC749p_ZcXLFT.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Great! You can edit bookmark descriptions. So what? My answer to that is yet another convoluted Scott Willsey trail of starting at one point and winding up at entirely another.&lt;/p&gt;
&lt;p&gt;Once upon a time, namely now, there existed a little private indie Mac app developer called &lt;a href=&quot;https://retina.studio&quot;&gt;Retina Studio&lt;/a&gt;. Retina Studio are the makers of a wonderful little app that I discovered somehow, maybe through &lt;a href=&quot;https://www.youtube.com/@snazzy&quot;&gt;Snazzy Labs&lt;/a&gt;, maybe not, called &lt;a href=&quot;https://retina.studio/textbuddy/&quot;&gt;TextBuddy&lt;/a&gt;. TextBuddy is an &lt;em&gt;amazing&lt;/em&gt; app and I highly recommend it, but it’s another app of Retina Studio’s that is the point of this bookmark conversation: &lt;a href=&quot;https://retina.studio/fastmarks/&quot;&gt;Fastmarks&lt;/a&gt;, which I tried after purchasing TextBuddy.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://retina.studio/fastmarks/&quot;&gt;Fastmarks&lt;/a&gt; is all about searching and opening your browser bookmarks quickly. Despite the fact that this post is about Safari bookmarks, Fastmarks can also search bookmarks from Chrome, Edge, Brave, and Firefox, as well as iCloud tab groups and &lt;a href=&quot;https://hookproductivity.com&quot;&gt;Hookmark&lt;/a&gt; bookmarks. It’s keyboard shortcut driven, and it’s way faster than either Safari bookmarks or the solution I was using for bookmarks, &lt;a href=&quot;https://raindrop.io/&quot;&gt;Raindrop.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FastmarksSearch-CE38CE7A-7298-4E0C-AAF9-E79BAF369BC5.jpg&quot;&gt;&lt;img alt=&quot;Searching bookmarks with Fastmarks&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1900&quot; height=&quot;1310&quot; src=&quot;https://scottwillsey.com/_astro/FastmarksSearch-CE38CE7A-7298-4E0C-AAF9-E79BAF369BC5.Cjw0wB0V_1RfxnO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The downside to using browser bookmarks as opposed to something like Raindrop, though, is that Raindrop is all about categorization and organization. Yes, there are categories, but also tags, so that any given bookmark can fit across several topic domains, as makes sense. Also any description information you add is readily available while searching bookmarks in Raindrop.&lt;/p&gt;
&lt;p&gt;I realized quickly that switching to Fastmarks and Safari bookmarks would mean losing tags, and I didn’t like that. In addition, although I could put bookmarks into category-like folders in Safari, Fastmarks doesn’t show or care about that. So basically in order to use Fastmarks, I not only have to rely on putting bookmarks in my browsers again, but I also lose my precious organizational metadata.&lt;/p&gt;
&lt;p&gt;My solution, I thought, would be to just add keywords equivalent to tags to the bookmark descriptions. This is where the procedure above for editing Safari bookmark descriptions was to come in handy. And it did. It’s just that apparently Fastmarks doesn’t use the description metadata for search results.&lt;/p&gt;
&lt;p&gt;Wah, wah, wah…&lt;/p&gt;
&lt;p&gt;So now my current plan is to just add the keywords to the ends of my bookmark titles, in alphabetical order. In fact, if you look at the first image in this post closely, you’ll see I’ve already started that process. This will make it so I still get the incredible speed of Fastmarks, but also the increased likelihood of &lt;a href=&quot;https://www.youtube.com/watch?v=e3-5YC_oHjE&quot;&gt;finding what I’m looking for&lt;/a&gt; that comes with tags and other extra metadata.&lt;/p&gt;
&lt;p&gt;Fastmarks isn’t perfect – I really wish it would let me specify for it to match whole words from my search in any order instead of only matching in the order they appear in the bookmark name,&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and I wish I could use regular expressions to search bookmarks with – but it’s fast and I’m going to give it a proper try as my bookmark search solution.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Fastmarks does have fuzzy searching, but it matches every character in a search and quickly becomes a problem of building a bigger haystack than with non-fuzzy searching. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Editing Safari bookmark descriptions and the (more interesting) backstory of why I stumbled across how to do it.</summary></item><item><title>Adding to Allowed Tags in sanitize-html</title><link>https://scottwillsey.com/sanitize-html</link><guid isPermaLink="true">https://scottwillsey.com/sanitize-html</guid><description>sanitize-html is a great utility for cleaning up HTML to include in RSS, among other things, but it has a limited set of allowed tags. Here&apos;s how to add to that list.</description><pubDate>Tue, 27 Jun 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Because I include full body text in my RSS feed, I use an html sanitizer called &lt;a href=&quot;https://www.npmjs.com/package/sanitize-html&quot;&gt;sanitize-html&lt;/a&gt; to sanitize, escape, and encode everything in the item body. One thing I didn’t realize until today is that by default, it strips out img tags. I knew that images were missing from my posts when viewed in RSS readers, but I thought this was due to me using relative URLs for them and not including the full URL including domain name. This may actually still matter, but it turns out my images never got that far, because sanitize-html was removing them whenever my RSS feed was rebuilt.&lt;/p&gt;
&lt;p&gt;The good news is, there’s an easy way around this because sanitize-html provides an easy way to add tags to those allowed, and their documentation even includes the img tag example:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;clean&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;dirty&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;const clean = sanitizeHtml(dirty, {  allowedTags: sanitizeHtml.defaults.allowedTags.concat([&amp;#x22;img&amp;#x22;]),});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Here’s the entirety of my original Astro RSS template before I realized this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/rss.xml.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/rss&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro:content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sanitize-html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;MarkdownIt&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;markdown-it&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;year&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;globalImageUrls&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/StringFormat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;parser&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;MarkdownIt&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;getCollection&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;atom&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://www.w3.org/2005/Atom/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;dc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://purl.org/dc/elements/1.1/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;http://purl.org/rss/1.0/modules/content/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;}${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;parser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; new Date(b.data.date).valueOf() - new Date(a.data.date).valueOf()  );  return rss({    title: config.get(&amp;#x22;title&amp;#x22;),    description: config.get(&amp;#x22;description&amp;#x22;),    site: context.site,    xmlns: {      atom: &amp;#x22;http://www.w3.org/2005/Atom/&amp;#x22;,      dc: &amp;#x22;http://purl.org/dc/elements/1.1/&amp;#x22;,      content: &amp;#x22;http://purl.org/rss/1.0/modules/content/&amp;#x22;,    },    items: posts.map((post) =&gt; ({      title: post.data.title,      link: &amp;#x60;${config.get(&amp;#x22;url&amp;#x22;)}${post.slug}&amp;#x60;,      pubDate: rfc2822(post.data.date),      description: post.data.description,      content: sanitizeHtml(parser.render(post.body)),    })),  });}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Fixing it is as easy as modifying the content section like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;parser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;content: sanitizeHtml(parser.render(post.body), {  allowedTags: sanitizeHtml.defaults.allowedTags.concat([&amp;#x22;img&amp;#x22;]),});&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;In my case I run all this through yet another custom function called globalImageUrls, which just takes relative URLs from the post body and converts them to absolute urls including the domain:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;globalImageUrls&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;parser&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;content: globalImageUrls( sanitizeHtml(parser.render(post.body), {  allowedTags: sanitizeHtml.defaults.allowedTags.concat([&amp;#x22;img&amp;#x22;]), })),&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That function is in a utility file called StringFormat.js and looks look this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/components/utilities/StringFormat.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;globalImageUrls&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#811F3F;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;img src=&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;images&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(?:&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;jpg&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#D40000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;jpeg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#D40000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#96D0FF&quot;&gt;gif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#D40000;--2:#F5776E&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(?:&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt; alt=&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;\s&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000;--2:#8DDB8C;--2fw:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--1:#811F3F;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;str&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;replaceAll&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;img src=&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/$1/$2&quot; alt=&quot;$3&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;replaceAll&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;//images&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;/g;  return str    .replaceAll(regex, &amp;#x27;&lt;img src=&quot;&quot;&gt;&amp;#x27;)    .replaceAll(&amp;#x22;//images&amp;#x22;, &amp;#x22;/images&amp;#x22;);}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Anyway, if you use sanitize-html be aware that this is its list of allowed tags by default:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;allowedTags&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;aside&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;footer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;h6&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hgroup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;nav&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;blockquote&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;figcaption&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;figure&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;hr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ol&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;abbr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bdi&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;bdo&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;cite&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;code&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dfn&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;I&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;kbd&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;mark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;q&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;rb&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;rp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;rt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;rtc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;ruby&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;samp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;small&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;strong&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sub&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;u&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;wbr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;caption&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;col&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;colgroup&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;table&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;tbody&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;td&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;tfoot&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;th&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;thead&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;tr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;allowedTags: [      &amp;#x22;address&amp;#x22;, &amp;#x22;article&amp;#x22;, &amp;#x22;aside&amp;#x22;, &amp;#x22;footer&amp;#x22;, &amp;#x22;header&amp;#x22;, &amp;#x22;h1&amp;#x22;, &amp;#x22;h2&amp;#x22;, &amp;#x22;h3&amp;#x22;, &amp;#x22;h4&amp;#x22;,      &amp;#x22;h5&amp;#x22;, &amp;#x22;h6&amp;#x22;, &amp;#x22;hgroup&amp;#x22;, &amp;#x22;main&amp;#x22;, &amp;#x22;nav&amp;#x22;, &amp;#x22;section&amp;#x22;, &amp;#x22;blockquote&amp;#x22;, &amp;#x22;dd&amp;#x22;, &amp;#x22;div&amp;#x22;,      &amp;#x22;dl&amp;#x22;, &amp;#x22;dt&amp;#x22;, &amp;#x22;figcaption&amp;#x22;, &amp;#x22;figure&amp;#x22;, &amp;#x22;hr&amp;#x22;, &amp;#x22;li&amp;#x22;, &amp;#x22;main&amp;#x22;, &amp;#x22;ol&amp;#x22;, &amp;#x22;p&amp;#x22;, &amp;#x22;pre&amp;#x22;,      &amp;#x22;ul&amp;#x22;, &amp;#x22;a&amp;#x22;, &amp;#x22;abbr&amp;#x22;, &amp;#x22;b&amp;#x22;, &amp;#x22;bdi&amp;#x22;, &amp;#x22;bdo&amp;#x22;, &amp;#x22;br&amp;#x22;, &amp;#x22;cite&amp;#x22;, &amp;#x22;code&amp;#x22;, &amp;#x22;data&amp;#x22;, &amp;#x22;dfn&amp;#x22;,      &amp;#x22;em&amp;#x22;, &amp;#x22;I&amp;#x22;, &amp;#x22;kbd&amp;#x22;, &amp;#x22;mark&amp;#x22;, &amp;#x22;q&amp;#x22;, &amp;#x22;rb&amp;#x22;, &amp;#x22;rp&amp;#x22;, &amp;#x22;rt&amp;#x22;, &amp;#x22;rtc&amp;#x22;, &amp;#x22;ruby&amp;#x22;, &amp;#x22;s&amp;#x22;, &amp;#x22;samp&amp;#x22;,      &amp;#x22;small&amp;#x22;, &amp;#x22;span&amp;#x22;, &amp;#x22;strong&amp;#x22;, &amp;#x22;sub&amp;#x22;, &amp;#x22;sup&amp;#x22;, &amp;#x22;time&amp;#x22;, &amp;#x22;u&amp;#x22;, &amp;#x22;var&amp;#x22;, &amp;#x22;wbr&amp;#x22;, &amp;#x22;caption&amp;#x22;,      &amp;#x22;col&amp;#x22;, &amp;#x22;colgroup&amp;#x22;, &amp;#x22;table&amp;#x22;, &amp;#x22;tbody&amp;#x22;, &amp;#x22;td&amp;#x22;, &amp;#x22;tfoot&amp;#x22;, &amp;#x22;th&amp;#x22;, &amp;#x22;thead&amp;#x22;, &amp;#x22;tr&amp;#x22;    ],&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded><summary>sanitize-html is a great utility for cleaning up HTML to include in RSS, among other things, but it has a limited set of allowed tags. Here&apos;s how to add to that list.</summary></item><item><title>Automatic Image Processing with AppleScript and Retrobatch</title><link>https://scottwillsey.com/autoimageprocess</link><guid isPermaLink="true">https://scottwillsey.com/autoimageprocess</guid><description>I now have automatic image processing for my Friends with Brews images that happens automatically when I drop images in a folder, and I love it.</description><pubDate>Mon, 26 Jun 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every episode of &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt;, I need to generate images for the drinks to include in the podcast chapter artwork and (more importantly) to feature on the website. What I create is a square image in PNG format (for reasons I won’t get into here, but more on the image format later) that has a naming scheme that reflects the manufacturer, the drink name, and a UUID to make sure I never accidentally have file naming collisions (although that should never happen anyway in this use case). I used to do this manually, but no longer.&lt;/p&gt;
&lt;p&gt;At some recent point in my life, I purchased a copy of &lt;a href=&quot;https://flyingmeat.com/&quot;&gt;Flying Meat&lt;/a&gt;’s &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt;. I don’t remember why, other than I was manually tweaking images for Friends with Brews already, and I am a very happy customer of Flying Meat’s other product, &lt;a href=&quot;https://flyingmeat.com/acorn/&quot;&gt;Acorn&lt;/a&gt;. Acorn is the image editor that I was using to get beverage images ready for the site – it’s simple but powerful, and it’s human-friendly, as their tagline “the image editor for humans” attests. Anyway, Retrobatch is all about batch image processing, and I’m pretty sure my thought process was along the lines of getting out of the manual image tweaking business for Friends with Brews.&lt;/p&gt;
&lt;p&gt;Flying Meat has dumped a ton of features, scriptability, and customizability into Retrobatch. You can get a taste of some of its capabilities on the &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;product description page&lt;/a&gt;. One thing I couldn’t figure out how to do in Retrobatch though was to easily append a UUID to the image filenames. Retrobatch allows for all kinds of dynamic naming schemes for files, but I couldn’t see a way to get the filename without the extension, append the output of an AppleScript or JavaScript block on it, and save it to that concatenated string plus the extension. Generating the UUID in Retrobatch isn’t the issue - I could just run an AppleScript or JavaScript in a Retrobatch script block that does it - but modifying the filename the way I want is (apparently) not easily done.&lt;/p&gt;
&lt;p&gt;AppleScript, however, can talk to both the shell and Retrobatch, so I can use it to fire up Retrobatch processing, generate a UUID with a shell command, and finally, rename all the files in the OUT folder to include the UUID before the file extension.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Use Retrobatch to square images and save them as PNG&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; open &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;((&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;POSIX file&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/FwB Images.retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; d&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;execute input &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/IN&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; output folder &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Generate a UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uuid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;do shell script&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uuidgen&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Finder&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Get a list of all files in the input directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Create POSIX path string&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;PosixPath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Convert POSIX path into colon path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;imagePath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;POSIX file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; PosixPath&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;string&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileList&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;every&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; folder imagePath&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Loop through each file and copy it to the output directory with a new name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;aFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileList&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; extension &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;thru&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;((&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileName&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;newName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; baseName &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; uuid &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileExtension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&apos;s &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; newName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;-- Use Retrobatch to square images and save them as PNGtell application &amp;#x22;Retrobatch&amp;#x22; set d to open ((POSIX file &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/FwB Images.retrobatch&amp;#x22;) as alias) tell d  execute input items &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/IN&amp;#x22; output folder &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&amp;#x22; end tellend tell-- Generate a UUIDset uuid to (do shell script &amp;#x22;uuidgen&amp;#x22;)tell application &amp;#x22;Finder&amp;#x22; -- Get a list of all files in the input directory -- Create POSIX path string set PosixPath to &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&amp;#x22; -- Convert POSIX path into colon path set imagePath to (POSIX file PosixPath) as string set fileList to every file of folder imagePath -- Loop through each file and copy it to the output directory with a new name repeat with aFile in fileList  set fileName to name of aFile  set fileExtension to name extension of aFile  set baseName to text 1 thru ((length of fileName) - (length of fileExtension) - 1) of fileName  set newName to baseName &amp;#x26; &amp;#x22;-&amp;#x22; &amp;#x26; uuid &amp;#x26; &amp;#x22;.&amp;#x22; &amp;#x26; fileExtension  set aFile&amp;#x27;s name to newName end repeatend tell&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;But, wait – there’s more! It turns out macOS natively supports folder events such that you can run a script when something happens in a folder. This means I can have it run my AppleScript, with a slight modification, whenever I drop the images into my IN folder, and it’ll put the formatted images into my OUT folder and rename them with the UUID added.&lt;/p&gt;
&lt;p&gt;The trick to this is in adding my AppleScript (slightly modified) to my &lt;code&gt;~/Library/Scripts/Folder Action Scripts&lt;/code&gt; folder. Note the ~ indicating this is in the user folder’s Library folder, not the top level &lt;code&gt;/Library&lt;/code&gt; folder.&lt;/p&gt;
&lt;p&gt;First the AppleScript modification: A line at the top and a line at the bottom which tell it to only execute the AppleScript when new items are added to the folder:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;adding folder items to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; theAttachedFolder &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;after&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; receiving theNewItems&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;... &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;original &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;AppleScript&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; here&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; ...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;adding folder items to&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;on adding folder items to theAttachedFolder after receiving theNewItems... (original AppleScript here) ...end adding folder items to&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The full script now looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;adding folder items to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; theAttachedFolder &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;after&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; receiving theNewItems&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Use Retrobatch to square images and save them as PNG&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; open &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/FwB Images.retrobatch&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;delay&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; d&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;execute input &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/IN&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; output folder &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Generate a UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uuid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;do shell script&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uuidgen&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Finder&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Get a list of all files in the input directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Create POSIX path string&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;PosixPath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Convert POSIX path into colon path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;imagePath&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;POSIX file&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; PosixPath&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;string&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileList&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;every&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; folder imagePath&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Loop through each file and copy it to the output directory with a new name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;aFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileList&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; extension &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;thru&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;((&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileName&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;newName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; baseName &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; uuid &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileExtension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&apos;s &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; newName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; theNewItems &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#6CB6FF&quot;&gt;trash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;adding folder items to&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;on adding folder items to theAttachedFolder after receiving theNewItems -- Use Retrobatch to square images and save them as PNG tell application &amp;#x22;Retrobatch&amp;#x22;  set d to open &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/FwB Images.retrobatch&amp;#x22;  delay 5  tell d   execute input items &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/IN&amp;#x22; output folder &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&amp;#x22;  end tell end tell -- Generate a UUID set uuid to (do shell script &amp;#x22;uuidgen&amp;#x22;) tell application &amp;#x22;Finder&amp;#x22;  -- Get a list of all files in the input directory  -- Create POSIX path string  set PosixPath to &amp;#x22;/Users/scott/Documents/Podcasts/FwB/BrewsImages/OUT&amp;#x22;  -- Convert POSIX path into colon path  set imagePath to (POSIX file PosixPath) as string  set fileList to every file of folder imagePath  -- Loop through each file and copy it to the output directory with a new name  repeat with aFile in fileList   set fileName to name of aFile   set fileExtension to name extension of aFile   set baseName to text 1 thru ((length of fileName) - (length of fileExtension) - 1) of fileName   set newName to baseName &amp;#x26; &amp;#x22;-&amp;#x22; &amp;#x26; uuid &amp;#x26; &amp;#x22;.&amp;#x22; &amp;#x26; fileExtension   set aFile&amp;#x27;s name to newName  end repeat  move theNewItems to the trash end tellend adding folder items to&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;For the AppleScript to execute automatically on a folder, first it needs to be located in &lt;code&gt;~/Library/Scripts/Folder Action Scripts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FolderActionScriptsFolder-BD0E8CCA-F2E3-487E-AF1C-3B67CF321DEF.jpg&quot;&gt;&lt;img alt=&quot;Folder Action Scripts folder&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1892&quot; height=&quot;900&quot; src=&quot;https://scottwillsey.com/_astro/FolderActionScriptsFolder-BD0E8CCA-F2E3-487E-AF1C-3B67CF321DEF.CmA5GzZj_HnSis.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once I had the AppleScript there, I right-clicked my input folder, selected &lt;code&gt;Services&lt;/code&gt; and then &lt;code&gt;Folder Action Setup&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FolderActionsSetupMenu-86B4A871-966E-4A27-A2C5-3FC85E131D6C.jpg&quot;&gt;&lt;img alt=&quot;Folder Action Setup menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1818&quot; height=&quot;1704&quot; src=&quot;https://scottwillsey.com/_astro/FolderActionsSetupMenu-86B4A871-966E-4A27-A2C5-3FC85E131D6C.BoDo3iUp_20tv3J.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the “Folder Action Setup” dialog box, I clicked on the action name on the right to reveal a dropdown with my AppleScript in the list. I chose the AppleScript, made sure “Enable Folder Actions” was checked, and closed the dialog box.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FolderActionsSetup-1081E829-4FB6-447A-88A5-BC7EE5F934F6.jpg&quot;&gt;&lt;img alt=&quot;Folder Action Setup dialog&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1562&quot; height=&quot;1282&quot; src=&quot;https://scottwillsey.com/_astro/FolderActionsSetup-1081E829-4FB6-447A-88A5-BC7EE5F934F6.ymZBT88Y_1UaOkn.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now I have a folder that I can drop images into, and they automatically get formatted and renamed and placed in my output folder.&lt;/p&gt;
&lt;p&gt;There IS one thing to remember about renaming files in a folder that watches for new items: renaming a file will trigger the script again because it appears to Finder to be a new item. That means if you rename an item in the input folder and the script doing the renaming is set to execute whenever new items appear, it’ll run repeatedly on the same file and the name won’t be what you want. This is why I move the files to the output folder before changing the name by adding the UUID to it.&lt;/p&gt;
&lt;p&gt;This workflow doesn’t completely remove all manual labor because I still have to download the files, determine whether or not I need to pre-crop so the Retrobatch square crop action won’t remove something I want, and finally maybe add a background using Acorn if the original image background is transparent. I think I can probably get Retrobatch to handle that last part for me… I hope. I haven’t tried yet.&lt;/p&gt;
&lt;p&gt;At the start of this post, I said I’d mention image formats again. I just wanted to point out that regardless of what format I save them to my site src folder in, they get optimized and output in a more responsive-friendly size and format. I use PNG because by being consistent I can overcome an interesting Vite feature regarding dynamic image imports and still get the job done.&lt;/p&gt;
&lt;p&gt;As always, I’m really bad at explaining things clearly, so hit me on &lt;a href=&quot;https://appdot.net/@scottaw&quot;&gt;Mastodon&lt;/a&gt; or &lt;a href=&quot;https://bsky.app/profile/scottwillsey.com&quot;&gt;Bluesky&lt;/a&gt; if none of this makes sense.&lt;/p&gt;</content:encoded><summary>I now have automatic image processing for my Friends with Brews images that happens automatically when I drop images in a folder, and I love it.</summary></item><item><title>Is This the Show?</title><link>https://scottwillsey.com/is-this-the-show</link><guid isPermaLink="true">https://scottwillsey.com/is-this-the-show</guid><description>A new podcast with a trio of hosts who&apos;ve never been seen in the same room together before.</description><pubDate>Wed, 21 Jun 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been on podcasts with both &lt;a href=&quot;https://mastodon.art/@cwdaly&quot;&gt;Clay Daly&lt;/a&gt; and &lt;a href=&quot;https://engineered.space/users/chidgey&quot;&gt;John Chidgey&lt;/a&gt; before, including on my own &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews podcast&lt;/a&gt;, but I’ve never been on a podcast with both of them at the same time before. Now I have.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://isthistheshow.cyou&quot;&gt;Is This the Show?&lt;/a&gt; is our new, fortnightly (or so) podcast that gives the three of us a chance to catch up and talk about tech in a casual setting (as opposed to a &lt;a href=&quot;https://engineered.network/causality/&quot;&gt;Causality&lt;/a&gt; setting). If &lt;a href=&quot;https://isthistheshow.cyou/2023/05/01/1/&quot;&gt;episode 1&lt;/a&gt; lives up to its name and we can be &lt;a href=&quot;https://isthistheshow.cyou/2023/05/01/1/&quot;&gt;socially tolerated&lt;/a&gt;, then we may have a winner (only you can decide)!&lt;/p&gt;
&lt;p&gt;In other podcast news, &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; hits middle age with &lt;a href=&quot;https://friendswithbrews.com/40/&quot;&gt;episode 40&lt;/a&gt;, and Peter and I recount some of the thumbs ups and thumbs downs of the 99 brews, including beer, coffee, and tea, that we’ve featured in those 40 episodes. It may be the most relaxing midlife crisis ever!&lt;/p&gt;</content:encoded><summary>A new podcast with a trio of hosts who&apos;ve never been seen in the same room together before.</summary></item><item><title>Git Diff with Previous Commit Versions</title><link>https://scottwillsey.com/gitcommitdiffs</link><guid isPermaLink="true">https://scottwillsey.com/gitcommitdiffs</guid><description>Comparing versions of the same file from two different commits using git.</description><pubDate>Tue, 13 Jun 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my last post, I had a comparison of two different versions of the &lt;code&gt;scripts&lt;/code&gt; portion of my site’s &lt;code&gt;package.json&lt;/code&gt; file. You may have wondered, “how did he so easily compare his current site build script with a site build script version from long ago?”&lt;/p&gt;
&lt;p&gt;The answer is using &lt;code&gt;git diff&lt;/code&gt; with not only a filename for the file to compare, but with commit IDs of the two commits in question. It looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;diff&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;5298935609b106365c2786a711c844395539a43d&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;cfcbb396fb29e1e100908152f002ae2f9f6d3f29&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;package.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;git diff 5298935609b106365c2786a711c844395539a43d cfcbb396fb29e1e100908152f002ae2f9f6d3f29 package.json&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;And if you use a difftool for comparing changes, just change &lt;code&gt;diff&lt;/code&gt; to &lt;code&gt;difftool&lt;/code&gt; in the above:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;difftool&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;5298935609b106365c2786a711c844395539a43d&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;cfcbb396fb29e1e100908152f002ae2f9f6d3f29&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;package.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;git difftool 5298935609b106365c2786a711c844395539a43d cfcbb396fb29e1e100908152f002ae2f9f6d3f29 package.json&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Then your difftool of choice opens and you can compare the two versions of the same file from two different commits side by side:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/GitDiffTool-DF155BA0-CF87-46DC-8DBB-DF87B267513A.jpg&quot;&gt;&lt;img alt=&quot;Comparing two versions of the same file from two different commits&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2768&quot; height=&quot;408&quot; src=&quot;https://scottwillsey.com/_astro/GitDiffTool-DF155BA0-CF87-46DC-8DBB-DF87B267513A.DRTX-jTz_2iOMMP.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In order to find commit IDs, the command &lt;code&gt;git log&lt;/code&gt; will do the trick. The commit at the top is your latest commit. You can even search for a particular phrase with &lt;code&gt;git log&lt;/code&gt;, which I did in order to find my first Pagefind implementation.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-S&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;pagefind&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;git log -S pagefind&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I just had to page down a bit to get to where I first finished adding Pagefind prior to using Astro-Pagefind and then grab that commit ID for the comparison:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;commit&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;5298935609b106365c2786a711c844395539a43d&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Author:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Scott&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Willsey&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;someone@something.com&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Date:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mon&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Feb&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;27&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;15:26:40&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2023&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-0800&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Adds&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;public/_pagefind&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;dev&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;mode&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;Date:   Mon Feb 27 15:26:40 2023 -0800    Adds public/_pagefind files for dev mode&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;And, finally, in the interest of fairness, I dug through my git history and found what it takes to implement pagefind index build into the site build process, and it’s much simpler than what I wrote previously. Most of what I had in my build script for Pagefind prior to Astro-Pagefind was copying files to the public directory so Pagefind would function in dev mode. All you really need to integrate pagefind directly is something like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;&quot;build&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;export NODE_ENV=production &amp;#x26;&amp;#x26; astro build &amp;#x26;&amp;#x26; ./pagefind --source dist&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&amp;#x22;build&amp;#x22; : &amp;#x22;export NODE_ENV=production &amp;#x26;&amp;#x26; astro build &amp;#x26;&amp;#x26; ./pagefind --source dist&amp;#x22;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Git remains awesome, and its flexibility in allowing you to use helper apps of your choice does too.&lt;/p&gt;</content:encoded><summary>Comparing versions of the same file from two different commits using git.</summary></item><item><title>Astro-Pagefind</title><link>https://scottwillsey.com/astro-pagefind</link><guid isPermaLink="true">https://scottwillsey.com/astro-pagefind</guid><description>Pagefind is a great find for static site search (thanks to Bryce Wray for that line) and Astro-Pagefind integrates it beautifully into Astro.</description><pubDate>Mon, 12 Jun 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I thought I’d talked about &lt;a href=&quot;https://pagefind.app&quot;&gt;Pagefind&lt;/a&gt; and &lt;a href=&quot;https://github.com/shishkin/astro-pagefind&quot;&gt;Astro-Pagefind&lt;/a&gt; here before, but &lt;a href=&quot;https://scottwillsey.com/search/&quot;&gt;my very own site search&lt;/a&gt; which itself is built using Astro-Pagefind says otherwise.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pagefind.app&quot;&gt;Pagefind&lt;/a&gt; is a static search library that you install locally to your project, that runs and builds its index locally after your static site is compiled, and that provides both a JavaScript search tool and an HTML UI. It’s also &lt;a href=&quot;https://cloudcannon.com/blog/introducing-pagefind/&quot;&gt;open source and free to download and use&lt;/a&gt; on your site.&lt;/p&gt;
&lt;p&gt;You can &lt;a href=&quot;https://www.youtube.com/watch?v=74lsEXqRQys&quot;&gt;watch Liam Bigelow of CloudCannon presenting how Pagefind works&lt;/a&gt; and how it’s scaleable on YouTube in his video from HugoConf 2022. That name “HugoConf” may give you pause if you don’t use &lt;a href=&quot;https://gohugo.io&quot;&gt;Hugo&lt;/a&gt; as your static site generator (I don’t – I use &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;), but it’s actually a hint to the fact that Pagefind is completely static platform agnostic and will work regardless of you static site builder.&lt;/p&gt;
&lt;p&gt;I recommend you watch the video and see for yourself how lean Pagefind runs and then marvel over the fact that it’s free and ready to use on your static site. In the words of &lt;a href=&quot;https://www.brycewray.com&quot;&gt;Bryce Wray&lt;/a&gt;, &lt;a href=&quot;https://www.brycewray.com/posts/2022/07/pagefind-quite-find-site-search/&quot;&gt;Pagefind is quite a find for site search&lt;/a&gt;. Bryce also has a really good article on integrating Pagefind called &lt;a href=&quot;https://www.brycewray.com/posts/2022/12/sweeter-searches-pagefind/&quot;&gt;Sweeter searches with Pagefind&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Initially when I started using Pagefind on my websites, I used it as per the Pagefind docs. In terms of adding Pagefind search to a page, you drop in the following to your HTML template:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/_pagefind/pagefind-ui.css&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;stylesheet&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/_pagefind/pagefind-ui.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;text/javascript&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;DOMContentLoaded&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;PagefindUI&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;element&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;#search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;div id=&quot;&quot;&gt;&lt;/div&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That actually works quite well as is, but there’s even better news for you if you use &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; to build your static sites: &lt;a href=&quot;https://github.com/shishkin/astro-pagefind&quot;&gt;Sergey Shishkin’s Astro-Pagefind&lt;/a&gt; Astro integration.&lt;/p&gt;
&lt;p&gt;Astro-Pagefind lets you make life easy for yourself when adding Pagefind to your astro site by integrating it so that you can drop it into your Astro templates as a component.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Search&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-pagefind/components/Search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Search&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It really is that easy. Here’s the entirety of my search page Astro template, and it’s almost completely CSS to make the Pagefind UI look how I want:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/search.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Search&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-pagefind/components/Search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../layouts/Base.astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Search &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;className&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;pagefind-ui&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;is:global&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;root&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-scale&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-primary&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;fff&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-message-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;000&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-title-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;000&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;--pagefind-input-background: &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-border&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;0d0a01&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-border-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-image-border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-image-box-ratio&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-font&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;sans-serif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-button-background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-input-background&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-button-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-message-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-primary&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;fff&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-message-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;000&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-title-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;000&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--surface1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-input-background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-border&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;0d0a01&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-button-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;data-theme&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-primary&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;fff&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-message-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-title-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--accent1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-text&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;fff&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;83645a&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-input-background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-border&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--brand&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-tag&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;b59c94&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__search-input&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__search-clear&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-input-background&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__result-title&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__result-link&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;inline-block&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;700&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-scale&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-title-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__result-excerpt&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-result-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-weight&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-scale&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__message&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-message-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-scale&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-scale&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-ui-scale&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__button&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-button-color&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--pagefind-button-background&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C&quot;&gt;search&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;pagefind-ui__result-thumb&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;h1&gt;Search&lt;/h1&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;As I said, almost all CSS. Everything in the &lt;code&gt;&amp;#x3C;style&gt;&amp;#x3C;/style&gt;&lt;/code&gt; block overrides Pagefind’s default UI appearance. Basically I just used Chrome’s inspector tools to look at different elements and figure out which ones applied to me and needed to be overwritten (as well as seeing what the names of the elements were as written to the page).&lt;/p&gt;
&lt;p&gt;A nice quality of life enhancement using Astro-Pagefind over directly integrating Pagefind is that your build scripts don’t have to include anything about Pagefind at all. Astro-Pagefind takes care of that for you. Before Astro-Pagefind, I had to make sure to include Pagefind commands in my build scripts.&lt;/p&gt;
&lt;p&gt;Site build script when using direct Pagefind integration:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;package.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;scripts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;build&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;export NODE_ENV=production &amp;#x26;&amp;#x26; astro build &amp;#x26;&amp;#x26; minify public/styles/pagefind-ui.css &gt; public/styles/pagefind-ui.min.css &amp;#x26;&amp;#x26; ./pagefind --source dist &amp;#x26;&amp;#x26; cp -r dist/_pagefind/ public/_pagefind&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;dev&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;export NODE_ENV=development &amp;#x26;&amp;#x26; astro dev&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;preview&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro preview&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;npm run dev&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; public/styles/pagefind-ui.min.css &amp;#x26;&amp;#x26; ./pagefind --source dist &amp;#x26;&amp;#x26; cp -r dist/_pagefind/ public/_pagefind&amp;#x22;,    &amp;#x22;dev&amp;#x22; : &amp;#x22;export NODE_ENV=development &amp;#x26;&amp;#x26; astro dev&amp;#x22;,    &amp;#x22;preview&amp;#x22; : &amp;#x22;astro preview&amp;#x22;,    &amp;#x22;start&amp;#x22; : &amp;#x22;npm run dev&amp;#x22;,  }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Site build script when using Astro-Pagefind:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;package.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;scripts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;build&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;export NODE_ENV=production &amp;#x26;&amp;#x26; astro build&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;dev&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;export NODE_ENV=development &amp;#x26;&amp;#x26; astro dev&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;preview&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro preview&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#001080&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;npm run dev&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&amp;#x22;scripts&amp;#x22; : {    &amp;#x22;build&amp;#x22; : &amp;#x22;export NODE_ENV=production &amp;#x26;&amp;#x26; astro build&amp;#x22;,    &amp;#x22;dev&amp;#x22; : &amp;#x22;export NODE_ENV=development &amp;#x26;&amp;#x26; astro dev&amp;#x22;,    &amp;#x22;preview&amp;#x22; : &amp;#x22;astro preview&amp;#x22;,    &amp;#x22;start&amp;#x22; : &amp;#x22;npm run dev&amp;#x22;,  }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;To be fair to Pagefind, I think the build script could actually be slightly simpler. I think the reason I’m copying the output to &lt;code&gt;public/_pagefind&lt;/code&gt; is because I was trying to trick Pagefind into working in dev mode before I discovered Astro-Pagefind.&lt;/p&gt;
&lt;p&gt;The BEST part about using Astro-Pagefind instead of just integrating Pagefind the original way though is the ability to have search work even when running in Astro dev server mode (ie, while working on the site). Normally in order to see search working and see what effect your CSS or other changes have had on your Pagefind integration, you’d have to recompile and run a preview server with every change. With Astro-Pagefind, you just run in dev mode as you’d normally do when working on your site, and any changes you make that affect your Pagefind UI appearance will be available instantaneously when you make them.&lt;/p&gt;
&lt;p&gt;The trick Astro-Pagefind uses to do this is to use your last compiled site in your dist folder (or whatever you call yours) and pulls the already-built Pagefind index from there. It’s super slick and it’s really changed how I work whenever I am adding search to an Astro site.&lt;/p&gt;
&lt;p&gt;Considering Pagefind’s speed, scalability, and ease of integration, I don’t know of any better options for static site search. And if you’re using Astro, install Astro-Pagefind to your project and be amazed at how something that once was a big downside to static site builds is now an advantage.&lt;/p&gt;
&lt;p&gt;Give &lt;a href=&quot;https://github.com/shishkin/astro-pagefind&quot;&gt;Astro-Pagefind&lt;/a&gt; a try, or download &lt;a href=&quot;https://pagefind.app&quot;&gt;Pagefind&lt;/a&gt; directly if you’re not on Astro.&lt;/p&gt;</content:encoded><summary>Pagefind is a great find for static site search (thanks to Bryce Wray for that line) and Astro-Pagefind integrates it beautifully into Astro.</summary></item><item><title>Named CSS Grid Template Areas</title><link>https://scottwillsey.com/gridtemplateareas</link><guid isPermaLink="true">https://scottwillsey.com/gridtemplateareas</guid><description>CSS Grid template areas allow for quick grid layout and layout changes.</description><pubDate>Fri, 26 May 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the beautiful things about CSS grid (and in my opinion, there are many) is the ability to name grid sections (template areas) and then assign the children (the grid items) to those sections. This means you can do useful things like change where a grid item displays when the site is viewed on smaller screens.&lt;/p&gt;
&lt;p&gt;I used this capability recently when doing a redesign of &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt;. Previously, the navigation menu was just four links: &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Home&lt;/a&gt;, &lt;a href=&quot;https://friendswithbrews.com/friends/&quot;&gt;The Friends&lt;/a&gt;, &lt;a href=&quot;https://friendswithbrews.com/brews/1/&quot;&gt;The Brews&lt;/a&gt;, and &lt;a href=&quot;https://friendswithbrews.com/episodes/1/&quot;&gt;Episodes&lt;/a&gt;. I had links for our RSS feed and other ways to subscribe on the home page underneath the introduction paragraph. The reason I did this is so that on small screens, I could just reduce the size of the text and still fit all four links in the header without having to really change the layout much (although with the two links on either side of the logo arranged in rows, one over the other, instead of all four links on one row).&lt;/p&gt;
&lt;p&gt;Once I added transcripts to the site, the number of links I needed started growing. And I already wanted to link directly to the &lt;a href=&quot;https://friendswithbrews.com/follow/&quot;&gt;Follow&lt;/a&gt; page listing the various ways to subscribe to the podcast, along with our Mastodon account. So I knew I needed to make the site navigation menu more flexible. I decided to make use of the strategy I’ve employed on this site’s menu and just shuffle the menu to the bottom of the page for small screens narrower than 900 pixels. In addition, the Friends with Brews menu would switch from being a horizontal, page-wide list of links to a vertical list when the viewport is less than 900 pixels wide.&lt;/p&gt;
&lt;p&gt;CSS Grid makes this trivial. It might not seem intuitive to put vertical page sections in a grid, given that they’ll just lay out vertically one over the other with straight html and no CSS at all, but doing so allows you to name sections and thus move them around in the order of the page stack.&lt;/p&gt;
&lt;p&gt;In wide browsers, the menu appears right under the site header, with the menu items laid out horizontally.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/NewFwbDesktop.png&quot;&gt;&lt;img alt=&quot;Friends with Brews full-size menu view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;826&quot; src=&quot;https://scottwillsey.com/_astro/NewFwbDesktop.BE9GMvci_1qtODV.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For views narrower than 900px wide, the menu shifts down to the bottom of the page, with menu links stacked vertically.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/NewFwbResponsive.png&quot;&gt;&lt;img alt=&quot;Friends with Brews responsive menu view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;912&quot; height=&quot;452&quot; src=&quot;https://scottwillsey.com/_astro/NewFwbResponsive.B250p3om_ZLQ0Q7.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here’s the html for my Base.astro page layout that makes up the base of every page on Friends with Brews:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;Base.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;wrapper-grid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#C32F2F;--2:#FF938A;--2fs:italic&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;aside&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#C32F2F;--2:#FF938A;--2fs:italic&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;aside&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;slot&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#C32F2F;--2:#FF938A;--2fs:italic&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;footer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#C32F2F;--2:#FF938A;--2fs:italic&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;div id=&quot;&quot;&gt;    &lt;header&gt;&lt;/header&gt;    &lt;aside&gt;&lt;menu&gt;&lt;/menu&gt;&lt;/aside&gt;    &lt;main&gt;      &lt;slot&gt;&lt;/slot&gt;    &lt;/main&gt;    &lt;footer&gt;&lt;/footer&gt;  &lt;/div&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Don’t worry too much about &lt;code&gt;&amp;#x3C;Header /&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;Menu /&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;slot /&gt;&lt;/code&gt;, and &lt;code&gt;&amp;#x3C;Footer /&gt;&lt;/code&gt;, except to take it as how the page is laid out in full-sized view: site header, then menu, then main content, and then the footer.&lt;/p&gt;
&lt;p&gt;And here’s the CSS for the div with the ID &lt;code&gt;wrapper-grid&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#800000&quot;&gt;wrapper-grid&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;grid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-template-rows&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-template-areas&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;footer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-items&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;div#wrapper-grid {  display: grid;  grid-template-rows: auto auto 1fr auto;  grid-template-areas:    &amp;#x22;header&amp;#x22;    &amp;#x22;menu&amp;#x22;    &amp;#x22;main&amp;#x22;    &amp;#x22;footer&amp;#x22;;  justify-items: center;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can see I have set up grid template areas named &lt;code&gt;header&lt;/code&gt;, &lt;code&gt;menu&lt;/code&gt;, &lt;code&gt;main&lt;/code&gt;, and &lt;code&gt;footer&lt;/code&gt;. The desired correlation to the html sections should be clear. But this just sets up the fact that those template areas exist. In order to determine what html goes in what grid template area, each of those sections needs to state their membership using the grid-area property.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--header-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;flex-direction&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;column&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;justify-content&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;align-items&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-area&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000&quot;&gt;nav-container&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-border&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-area&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;ch&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;min-height&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;vh&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;330&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;/*100 vh - header &amp;#x26; footer h */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-area&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;footer&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-top&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-border&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-text&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-area&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; footer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;header {  width: 100%;  background-color: var(--header-surface);  display: flex;  flex-direction: column;  justify-content: center;  align-items: center;  grid-area: header;}div.nav-container {  width: 100%;  margin: 0 auto;  background-color: var(--menu-surface);  border-bottom: solid 5px var(--menu-border);  grid-area: menu;}main {  max-width: 80ch;  min-height: calc(100vh - 330px); /*100 vh - header &amp;#x26; footer h */  margin: 0 auto;  padding: 1rem 2rem 3rem;  grid-area: main;}.footer {  width: 100%;  margin: 0 auto;  padding: 0.5rem 0;  border-top: 3px solid var(--menu-border);  font-size: 1rem;  background-color: var(--menu-surface);  color: var(--menu-text);  grid-area: footer;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area&quot;&gt;grid-area property is really a shorthand for &lt;code&gt;grid-row-start&lt;/code&gt;, &lt;code&gt;grid-column-start&lt;/code&gt;, &lt;code&gt;grid-row-end&lt;/code&gt;, and &lt;code&gt;grid-column-end&lt;/code&gt;&lt;/a&gt;. I could have (and almost did) use the properties instead to layout my grid.&lt;/p&gt;
&lt;p&gt;To move the menu to the bottom for narrow screens, I use a simple media query to rearrange the grid areas inside the wrapper-grid div.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;/* Screens under 900px have the menu under the main content with a link to the menu up near the title */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;only&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;screen&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#D30000;--2:#6CB6FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;899&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#800000&quot;&gt;wrapper-grid&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;grid&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-template-rows&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;min-content&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;min-content&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;min-content&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;min-content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;grid-template-areas&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;footer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;menu&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;/* Screens under 900px have the menu under the main content with a link to the menu up near the title */@media only screen and (max-width: 899px) {  div#wrapper-grid {    display: grid;    grid-template-rows: min-content min-content min-content min-content;    grid-template-areas: &amp;#x22;header&amp;#x22; &amp;#x22;main&amp;#x22; &amp;#x22;footer&amp;#x22; &amp;#x22;menu&amp;#x22;;  }}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Tada! Instant re-placement (not replacement) of the menu to the bottom of the page!&lt;/p&gt;
&lt;p&gt;As far as switching the menu from horizontal to vertical layout, that’s because the nav ul is also a grid, and it’s laid out with &lt;code&gt;grid-template-columns: repeat(6, 1fr);&lt;/code&gt; in wide view, and &lt;code&gt;grid-template-rows: repeat(6, 1fr);&lt;/code&gt; in narrow view. It’s as simple as switching from column to row view using another media query for narrow screens.&lt;/p&gt;
&lt;p&gt;Have a look at the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas&quot;&gt;documentation for grid-template-areas&lt;/a&gt;. It’s a pretty cool CSS feature, and it reinforces my love for CSS grid.&lt;/p&gt;</content:encoded><summary>CSS Grid template areas allow for quick grid layout and layout changes.</summary></item><item><title>Giving in to Astro Pagination</title><link>https://scottwillsey.com/astro-pagination</link><guid isPermaLink="true">https://scottwillsey.com/astro-pagination</guid><description>Blog post pagination: I fought the Astro law and the Astro law won.</description><pubDate>Mon, 01 May 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’re reading this thinking “this site looks a little bit different”, you’re correct. What started off as an exercise in improving my pagination pager for my blog posts became a bit of a site redesign including moving menu links out of the header into a standalone menu, a new (work-in-progress) pager, and having the home page act as a links/summary page instead of being the full page 1 of my paginated blog posts.&lt;/p&gt;
&lt;p&gt;The home page change is probably the most obvious to most people, even though the menu change is the one I personally think improves things the most. Whereas previously I did a couple minor hacks with my pagination logic to have the home page show the first page of blog posts, this isn’t really how &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; likes to handle pagination.&lt;/p&gt;
&lt;p&gt;Astro expects a &lt;a href=&quot;https://docs.astro.build/en/core-concepts/routing/#pagination&quot;&gt;&lt;code&gt;[bracket]&lt;/code&gt; syntax&lt;/a&gt; page that acts as the page that will page through a given collection of items. Because of this, implementing anything more than a simple “more posts” link on the home page became difficult for me. I wrestled with figuring out how to get the home page the information passed via the &lt;a href=&quot;https://docs.astro.build/en/core-concepts/routing/#the-page-prop&quot;&gt;page prop&lt;/a&gt; like Astro does on a proper paginated page.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;In the end, I gave up and decided to do what Astro seems to think is the right way to set up a blog site, which is to have a landing home page and keep the paginated blog posts off of it. That doesn’t mean completely avoiding linking to posts, as you can see from the fact that I have a list of the 5 most recent posts on the home page. But these aren’t the complete posts like on the paginated blog post page, and they (obviously) aren’t paginated. Links to the 5 most recent posts are there, and that’s it.&lt;/p&gt;
&lt;p&gt;Personally I don’t really know why Astro doesn’t have the ability to handle routing pagination with the index page or home page as the first page of items, but they don’t. None of the popular sites I enjoy that have daily articles have a landing page with posts hidden behind a link. They all just get down to business and show the visitor the first page of posts, with a pager to move on to older content. Regardless, it’s not a hill I want to die on for this site. I do have a project in the works where it may become more of an issue, but I’ll cross that bridge when I come to it.&lt;/p&gt;
&lt;p&gt;Bridges and hills. Who knew there would be so much geography involved in running a web site?&lt;/p&gt;
&lt;h2 id=&quot;ordering-a-menu&quot;&gt;Ordering a Menu&lt;/h2&gt;
&lt;p&gt;Previously on this incarnation of my website (since converting it to Astro), the site header combined the site title (featuring my weird head) and the menu. The menu was just laid out horizontally and didn’t change for smaller screens other than to scale down enough to fit.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MenuOld-3E56C990-7E39-4697-A776-5214ED13CCAE.jpg&quot;&gt;&lt;img alt=&quot;The old site menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2178&quot; height=&quot;624&quot; src=&quot;https://scottwillsey.com/_astro/MenuOld-3E56C990-7E39-4697-A776-5214ED13CCAE.CZyjTZwk_Z1izz4J.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Besides not being very elegant, this menu structure also has the downside of featuring inherent non-expandability. This is a convoluted way of saying there was no way to cram more onto that menu. I knew that at some point I wanted a side menu that would disappear for small screens, but I wasn’t sure how it should look and if I really wanted a hamburger menu that would reveal a hidden mobile menu.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;https://bensmith.sh&quot;&gt;Ben Smith&lt;/a&gt;, whose website I stumbled across somehow, probably in the Astro Discord Showcase channel. I genuinely feel bad about how much I stole his menu ideas, but it looks good and functions even better. Instead of a hamburger menu, Ben chose an approach of having a hamburger menu looking icon next to the site title for small screens, but having it just jump the visitor down to the same menu as on the full-size site, except now located down at the bottom of the page. I loved it. I stole it. I’m sorry and thank you?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MenuNew-3E56C990-7E39-4697-A776-5214ED13CCAE.jpg&quot;&gt;&lt;img alt=&quot;Side menu in full-size site view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1828&quot; height=&quot;868&quot; src=&quot;https://scottwillsey.com/_astro/MenuNew-3E56C990-7E39-4697-A776-5214ED13CCAE.B23VY3s8_Z1IhReK.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MenuResponsive-3E56C990-7E39-4697-A776-5214ED13CCAE.jpg&quot;&gt;&lt;img alt=&quot;Menu moved to the bottom of the page in responsive mode&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1400&quot; height=&quot;2700&quot; src=&quot;https://scottwillsey.com/_astro/MenuResponsive-3E56C990-7E39-4697-A776-5214ED13CCAE.j_BOBLh6_Z986KC.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lest the reader think I also stole the icon idea, you can see from the image of the old menu above that I was already using a menu with icons. In fact, way back when my site was written with &lt;a href=&quot;https://gohugo.io&quot;&gt;Hugo&lt;/a&gt;, I had a menu that was nothing BUT icons. I think it’s fair to say this isn’t a unique idea.&lt;/p&gt;
&lt;p&gt;Also lest the reader wonders whether or not I realize the limitations of my design skills and whether or not I think my site looks stunningly professional, the answers are yes, I do realize my limitations, and no, I don’t overestimate my site’s appearance. My best is not very good when it comes to UI design or even design of any kind, and I do understand that.&lt;/p&gt;
&lt;p&gt;I’m not going to go into the old Pocket Sized Podcast days, but just know that I was publicly criticized by a few listeners for my artwork design skills, or lack thereof. &lt;span role=&quot;img&quot; aria-label=&quot;&quot; aria-hidden=&quot;&quot;&gt;🤷‍♂️&lt;/span&gt; You can’t win them all. Hopefully this site is at least tolerable enough that people won’t take time out of their day to chase me down and tell me how bad it is.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Say that 10 times fast. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Blog post pagination: I fought the Astro law and the Astro law won.</summary></item><item><title>All the GPTs</title><link>https://scottwillsey.com/allgpts</link><guid isPermaLink="true">https://scottwillsey.com/allgpts</guid><description>Mac and iOS users have some great options for ChatGPT tools.</description><pubDate>Wed, 26 Apr 2023 17:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;gpt---what-is-it-good-for&quot;&gt;GPT - What is it good for?&lt;/h2&gt;
&lt;p&gt;Human communication is weird. It’s so nebulous and imprecise and dependent on visual cues like eye-to-eye contact and physical observation of the party we’re communicating with. I often used to imagine how much life would be easier if we could do direct data dumps into each other’s brains, like computers sending information to each other.&lt;/p&gt;
&lt;p&gt;How funny it is to me then that machine learning is making advances by using large language models to let computers parse incoming information through the context of human language in order to let systems with different APIs and data formats communicate with each other. It turns out that the future of computer communication may well be based on the less precise and more misunderstanding-prone human forms of verbal communication.&lt;/p&gt;
&lt;p&gt;All philosophical musing aside, the point is that I’ve been using ChatGPT to do computer related tasks for me like write AppleScripts, bash scripts, and detail nuances of Swift code. These are the types of things I believe the GPT LLMs are best at. I don’t like arguing with it to make it do things it’s not good at or isn’t supposed to do, and I understand and share the social and ethical concerns voiced by people like &lt;a href=&quot;https://dair-community.social/@timnitGebru&quot;&gt;Timnit Gebru&lt;/a&gt; and &lt;a href=&quot;https://dair-community.social/@emilymbender&quot;&gt;Emily M. Bender&lt;/a&gt;. In addition, there’s the question of resource usage, and LLM training requires tons of it.&lt;/p&gt;
&lt;p&gt;That’s a lot of off-topic information to prepend onto what is basically a post about what ChatGPT tools and applications I use, but I think it’s important to think about these things and not just blindly fall into the AI craze and believe everything people like Sam Altman want us to believe.&lt;/p&gt;
&lt;h2 id=&quot;gpt-apps&quot;&gt;GPT apps&lt;/h2&gt;
&lt;p&gt;“Blah, blah, blah,” you say, “what about the apps?” Fine. Let’s talk about some ChatGPT apps I like.&lt;/p&gt;
&lt;h3 id=&quot;macgpt&quot;&gt;MacGPT&lt;/h3&gt;
&lt;p&gt;By far the GPT app I use the most is &lt;a href=&quot;https://www.macgpt.com&quot;&gt;MacGPT&lt;/a&gt; by &lt;a href=&quot;https://mastodon.online/@jordibruin&quot;&gt;Jordi Bruin&lt;/a&gt;. MacGPT primarily runs as a menubar app, but it also features global mode (a pop up query field that looks like Spotlight) and inline mode (letting you get responses from ChatGPT right inside your text documents and text fields).&lt;/p&gt;
&lt;p&gt;As an example of inline mode, I’m going to trigger MacGPT to have ChatGPT tell me if Python 3 supports async/await right here inside this post.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Does Python 3 have async/await functionality?+gpt&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes, starting from Python 3.5, async/await functionality is available in Python. It allows for asynchronous programming, which can greatly improve the performance of certain types of applications. The async/await keywords are used to define asynchronous functions and to wait for the results of asynchronous operations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here’s what that looks like in action:&lt;/p&gt;
&lt;iframe width=&quot;710&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/GEZOyZ6BD5Q&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;MacGPT allows you to use either a native Mac UI for interacting with ChatGPT or the OpenAI web view for ChatGPT. Both have pros and cons - the OpenAI web view allows you to keep your history available there for access across all platforms, while the native UI looks nicer and (hopefully) in the future will have greater customization. I’d like to see an even wider menubar view, and complete font customization including font, font size, and bubble colors.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MacGPT-native-mode-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.jpg&quot;&gt;&lt;img alt=&quot;MacGPT native view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1928&quot; height=&quot;1536&quot; src=&quot;https://scottwillsey.com/_astro/MacGPT-native-mode-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.DmfiXvPj_Z2vkBXs.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/MacGPT-web-mode-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.jpg&quot;&gt;&lt;img alt=&quot;MacGPT web view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1996&quot; height=&quot;1410&quot; src=&quot;https://scottwillsey.com/_astro/MacGPT-web-mode-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.CBCFM85q_1n53Ux.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Both views allow for copying of conversations, but the native UI copy function copies the entire conversation in the window including both your prompts and ChatGPT’s replies, while the web view only allows you to copy a ChatGPT response and doesn’t include the preceding prompt that you entered.&lt;/p&gt;
&lt;p&gt;MacGPT isn’t perfect, but given the low cost of entry (it’s basically donation-ware) and the pace at which Jordi has added updates, I have high hopes for its future.&lt;/p&gt;
&lt;h3 id=&quot;machato&quot;&gt;Machato&lt;/h3&gt;
&lt;p&gt;I recently stumbled across another Mac ChatGPT app called &lt;a href=&quot;https://untimelyunicorn.gumroad.com/l/machato&quot;&gt;Machato&lt;/a&gt;. Machato takes a different approach than MacGPT in that it just runs as a normal Mac app and doesn’t have menubar, inline, or global (floating textbox) functionality. I miss MacGPT’s menubar aspect when using Machato, but it has some compelling features of its own.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Machato-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.jpg&quot;&gt;&lt;img alt=&quot;Machato&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1770&quot; height=&quot;1118&quot; src=&quot;https://scottwillsey.com/_astro/Machato-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.D0h7WRyL_XdDEU.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Machato lets you create multiple conversations so you can categorize by topic, and it also allows you to create folders to further organize them. It also has a very handy ability to branch a conversation so that you can pick a point to split off into a new conversation. All you have to do is hover over a prompt or response and click the “Branch from here” icon. It’s super handy.&lt;/p&gt;
&lt;p&gt;Machato also lets you pick the output type for copied conversations – Markdown, LaTeX, or plain text.&lt;/p&gt;
&lt;p&gt;And finally, Machato keeps track of your usage costs per day, week, month, or all time. I would love to see MacGPT steal this feature.&lt;/p&gt;
&lt;p&gt;I’m kind of torn between MacGPT and Machato, because Machato has the superior UI and functionality for serious “help me with my programming” use, for example, but MacGPT has the nice always-there presence with its menubar component and the ability to pop that open and closed with a keyboard shortcut.&lt;/p&gt;
&lt;h3 id=&quot;petey&quot;&gt;Petey&lt;/h3&gt;
&lt;p&gt;Another interesting entry into the ChatGPT space is &lt;a href=&quot;https://petey-assistant.com&quot;&gt;Petey&lt;/a&gt;. Petey is for iOS and (get this) Apple Watch. Yep, you can ask ChatGPT things from your watch. You can share the results to messages or mail on the watch, or copy and paste them by sending the answer to your iPhone with one tap, and copying the answer from there.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Petey-watchOS-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.jpg&quot;&gt;&lt;img alt=&quot;Petey for watchOS&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1084&quot; height=&quot;890&quot; src=&quot;https://scottwillsey.com/_astro/Petey-watchOS-E0A2DB0B-F3F1-4ACC-A2F6-FF6342475A43.Akl2ui_V_1fBubl.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On iOS, it’s not quite as interesting to me as the next app in my list, because it doesn’t let you do multiple conversations or look at the history as easily. You can ask questions, get answers (and have them read back to you), and copy and paste them, but that’s about it.&lt;/p&gt;
&lt;p&gt;Petey is well-designed, playful, and fun. For more background and information about Petey, you can hear it directly from app developer Hidde van der Ploeg&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; on &lt;a href=&quot;https://launchedfm.com/episodes/60-Petey-HiddevanderPloeg&quot;&gt;episode 60&lt;/a&gt; of the &lt;a href=&quot;https://launchedfm.com&quot;&gt;Launched&lt;/a&gt; podcast.&lt;/p&gt;
&lt;p&gt;Petey is $4.99 and has an in-app subscription, but if you have your own OpenAI API key, you don’t need to pay for the subscription.&lt;/p&gt;
&lt;h3 id=&quot;geepeetee&quot;&gt;GeePeeTee&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://apps.apple.com/us/app/geepeetee/id6446040815&quot;&gt;GeePeeTee&lt;/a&gt; is Jordi Bruin’s iOS companion app to MacGPT, but it has some interesting features that MacGPT doesn’t. The most interesting feature to me is Conversations, similar to the same feature in Machato. My assumption is he plans to bring that to MacGPT at some point, but I haven’t bothered him to ask yet.&lt;/p&gt;
&lt;p&gt;GeePeeTee doesn’t have a watchOS app, but it is better for iPhone use than Petey. Either way, you can’t go wrong. GeePeeTee is free on the App Store, but you need an API key.&lt;/p&gt;
&lt;h2 id=&quot;summarium&quot;&gt;Summarium&lt;/h2&gt;
&lt;p&gt;ChatGPT can be an effective tool to learn things and shorten writing or programming time if used wisely. It’s also wildly overhyped and has replaced crypto as the buzzword de jour, but the result is that lots of developers are writing apps against its API. You can probably guess by the fact I own and am talking about them that I like all the above apps (I do). I recommend you give them a try if you’re a Mac and iOS user who has room for ChatGPT in your workflow.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;No, I have no clue how to say that, but &lt;a href=&quot;https://mastodon.art/@cwdaly&quot;&gt;Clay Daly&lt;/a&gt; certainly must. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Mac and iOS users have some great options for ChatGPT tools.</summary></item><item><title>One More One More Thing: LaunchControl</title><link>https://scottwillsey.com/launchcontrol</link><guid isPermaLink="true">https://scottwillsey.com/launchcontrol</guid><description>While debugging a broken LaunchAgent script, I discovered a great utility.</description><pubDate>Sat, 15 Apr 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I inadvertently lied to you. &lt;a href=&quot;https://scottwillsey.com/one-more-thing/&quot;&gt;I bragged about using a bash script to get my current external IP address&lt;/a&gt; and putting it in my menu bar with One Thing, and about scheduling that to happen on a predetermined frequency by creating a LaunchDaemon plist and registering it with launchctl. But there’s just one problem.&lt;/p&gt;
&lt;p&gt;It didn’t actually &lt;em&gt;work&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;After a bunch of digging around, I figured out the reason was I was making some extremely basic scripting errors, but I’m glad it happened because along the way I also learned about some changes to how launchctl works in current macOS versions, and also about a program called &lt;a href=&quot;https://soma-zone.com/LaunchControl/&quot;&gt;LaunchControl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My primary error was that I forgot about how the Unix PATH and execution environment interaction works. Basically in Unix, your PATH variable dictates what directories the shell will look in to find the application or script you are telling it to execute, whether in a script or at the command prompt. I forgot that just because I could run my script at the command prompt and have it work, that didn’t meant that it would execute in the same environment with the same PATH as mine when executed as a LaunchAgent entry, even though the LaunchAgent is in my user directory’s Library/LaunchAgents directory. Therefore it could neither find one-thing (located in /usr/local/bin) in order to run that, nor could it find node.js which one-thing relies on (also in /usr/local/bin).&lt;/p&gt;
&lt;p&gt;The solution was to add /usr/local/bin to the PATH variable for the environment that launchd runs my script in.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;PATH&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;$PATH&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;:/usr/local/bin&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Show Update in Progress&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;one-thing&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;getting IP...&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Execute the dig command and store the output in a variable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;IP_ADDRESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;dig&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;TXT&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;+short&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;o-o.myaddr.l.google.com&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;@ns1.google.com&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;IP_ADDRESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;IP_ADDRESS&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Pass the IP address to the one-thing command&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;one-thing&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;$IP_ADDRESS&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bashexport PATH=&amp;#x22;$PATH:/usr/local/bin&amp;#x22;# Show Update in Progressone-thing &amp;#x22;getting IP...&amp;#x22;# Execute the dig command and store the output in a variableIP_ADDRESS=$(dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com)IP_ADDRESS=${IP_ADDRESS//\&amp;#x22;/}# Pass the IP address to the one-thing commandone-thing $IP_ADDRESS&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Very simple.&lt;/p&gt;
&lt;p&gt;Along the way though, before I realized my remedial error, I was worried that Ventura was causing permission errors or blocking executing of the script by launchd. As I researched this possible angle, I discovered a program called &lt;a href=&quot;https://soma-zone.com/LaunchControl/&quot;&gt;LaunchControl&lt;/a&gt;. LaunchControl describes itself this way:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LaunchControl is a fully-featured launchd GUI allowing you to create, manage and debug system- and user services on your Mac.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As you may remember, launchd handles User Agents (~/Library/LaunchAgents), Global Agents (/Library/LaunchAgents), Global Daemons (/Library/LaunchDaemons). LaunchControl allows easy viewing, execution, and modification of all of these in one location.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/LaunchControl-20E2C710-2E7A-416A-A046-221876C80836.jpg&quot;&gt;&lt;img alt=&quot;LaunchControl&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2076&quot; height=&quot;1062&quot; src=&quot;https://scottwillsey.com/_astro/LaunchControl-20E2C710-2E7A-416A-A046-221876C80836.BenYm_Et_1lzpsB.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It also allows for easy editing of the file being run by the Agent or Daemon, which makes trying things simple.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/LaunchControlEditScript-20E2C710-2E7A-416A-A046-221876C80836.jpg&quot;&gt;&lt;img alt=&quot;Edit Script in LaunchControl&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2158&quot; height=&quot;1338&quot; src=&quot;https://scottwillsey.com/_astro/LaunchControlEditScript-20E2C710-2E7A-416A-A046-221876C80836.BvtD3W4Z_Z1W64NH.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You don’t need LaunchControl to create and edit Agents and Daemons. You can create and edit plist files manually and many (most?) people do. But LaunchControl makes it easy in the same way that most people would much rather use VSCode or some other context-aware IDE to work on projects than to do it in TextEdit. It’s a powerful tool that makes something that is a chore easier and less error prone, and that seems like a good thing to me.&lt;/p&gt;</content:encoded><summary>While debugging a broken LaunchAgent script, I discovered a great utility.</summary></item><item><title>One (More?) Thing</title><link>https://scottwillsey.com/one-more-thing</link><guid isPermaLink="true">https://scottwillsey.com/one-more-thing</guid><description>Automating displaying my IP address in my menu bar.</description><pubDate>Sun, 09 Apr 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just about one year ago, Joe Rosensteel wrote on &lt;a href=&quot;https://sixcolors.com&quot;&gt;SixColors&lt;/a&gt; about &lt;a href=&quot;https://sixcolors.com/member/2022/08/putting-my-microclimate-in-my-menu-bar/&quot;&gt;putting local weather data in his menu bar&lt;/a&gt;. Aside from the entire system that gets the weather and gets it to his computer, the way he displays it in the menu bar is with a little utility app called &lt;a href=&quot;https://sindresorhus.com/one-thing&quot;&gt;One Thing&lt;/a&gt;. I thought it was a cool app, and I downloaded it, but never really made use of it. Until today.&lt;/p&gt;
&lt;p&gt;Today I was digging through web server logs to solve a non-pressing but quite interesting problem, and I realized I was tired of using What’s My IP type web services to see who I am so I would know which log entries on my server are me. I put the IP in &lt;a href=&quot;https://tot.rocks&quot;&gt;Tot&lt;/a&gt; so I could easily refer to it, and then I thought, “that’s great, but what about when it eventually changes?” Even though it almost never happens, it does happen very occasionally. Also, when I’m working with my terminal app in fullscreen mode, I don’t want to have to dig around for a note.&lt;/p&gt;
&lt;p&gt;Enter One Thing.&lt;/p&gt;
&lt;p&gt;I figured the easiest way to get a value into One Thing for this purpose would be from the command line, so I installed the &lt;a href=&quot;https://github.com/sindresorhus/one-thing&quot;&gt;One Thing command line tool&lt;/a&gt;. Then I googled for a nice command to get my external ip address from the command line and found&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;dig&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;TXT&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;+short&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;o-o.myaddr.l.google.com&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;@ns1.google.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I decided to make Peter happy by making ChatGPT do my scripting for me and asked &lt;a href=&quot;https://www.macgpt.com&quot;&gt;MacGPT&lt;/a&gt; to write a bash script that runs the dig command, removes the quotes the dig command places around the IP address, and then passes the output to the one-thing command line tool. That script looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Execute the dig command and store the output in a variable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;IP_ADDRESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;dig&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#6CB6FF&quot;&gt;-4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;TXT&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;+short&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;o-o.myaddr.l.google.com&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;@ns1.google.com&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;IP_ADDRESS&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;IP_ADDRESS&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D40000&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;# Pass the IP address to the one-thing command&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;one-thing&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;$IP_ADDRESS&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;#!/bin/bash# Execute the dig command and store the output in a variableIP_ADDRESS=$(dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com)IP_ADDRESS=${IP_ADDRESS//\&amp;#x22;/}# Pass the IP address to the one-thing commandone-thing $IP_ADDRESS&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The comments in the script are MacGPT’s, by the way.&lt;/p&gt;
&lt;p&gt;Although I’ve done tons of cron jobs on linux servers, I don’t think I’ve ever actually scheduled any tasks on a Mac in recent history. I knew I was going to want to use launchd but I was fuzzy on the details. I asked MacGPT what to do, and it told me to make a plist file that references my bash script, shove it in /Library/LaunchDaemons, and set some file permissions and file ownership settings, and register it with launchd using the launchctl command.&lt;/p&gt;
&lt;p&gt;I replied, “that’s cool, but maybe you should write the plist file for me”, and it did.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;xml&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt; version&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1.0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt; encoding&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;UTF-8&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;?&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;!&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;DOCTYPE&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0000FF;--2:#6CB6FF&quot;&gt;plist&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;&quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;plist&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1.0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Label&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;com.scottwillsey.my-ip-address&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;ProgramArguments&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;/bin/bash&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;/Users/scott/Scripts/bash-scripts/my-ip-address.sh&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;StartCalendarInterval&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Hour&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;integer&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;integer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;Minute&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;integer&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;integer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;plist&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;!DOCTYPE plist PUBLIC &amp;#x22;-//Apple//DTD PLIST 1.0//EN&amp;#x22;        &amp;#x22;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;#x22;&gt;&lt;plist version=&quot;&quot;&gt;  &lt;dict&gt;    &lt;key&gt;Label&lt;/key&gt;    &lt;string&gt;com.scottwillsey.my-ip-address&lt;/string&gt;    &lt;key&gt;ProgramArguments&lt;/key&gt;    &lt;array&gt;      &lt;string&gt;/bin/bash&lt;/string&gt;      &lt;string&gt;/Users/scott/Scripts/bash-scripts/my-ip-address.sh&lt;/string&gt;    &lt;/array&gt;    &lt;key&gt;StartCalendarInterval&lt;/key&gt;    &lt;dict&gt;      &lt;key&gt;Hour&lt;/key&gt;      &lt;integer&gt;12&lt;/integer&gt;      &lt;key&gt;Minute&lt;/key&gt;      &lt;integer&gt;0&lt;/integer&gt;    &lt;/dict&gt;  &lt;/dict&gt;&lt;/plist&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I moved this file to /Library/LaunchDaemons, set owner and permissions with &lt;code&gt;sudo chown root:wheel com.scottwillsey.my-ip-address.plist&lt;/code&gt; and &lt;code&gt;sudo chmod 644 com.scottwillsey.my-ip-address.plist&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now /Library/LaunchDaemons looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Songoku:bash-scripts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ll&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;/Library/LaunchDaemons&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;total&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;72&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwxr-xr-x&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;352&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Apr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;17:12&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;drwxr-xr-x&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;70&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2240&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Apr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:30&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;..&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;569&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mar&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;14:12&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.backblaze.bzserv.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;428&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Mar&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;14&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;19:02&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.microsoft.autoupdate.helper.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;594&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;23:23&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.objective-see.blockblock.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;399&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jun&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2018&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.objective-see.ransomwhere.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;781&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;09:20&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.rogueamoeba.aceagent.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;777&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;09:20&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.rogueamoeba.acetool.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;598&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Apr&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;17:10&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;com.scottwillsey.my-ip-address.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;580&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Nov&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;26&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;09:26&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;net.telestream.LicensingHelper.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;wheel&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;532&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;12:26&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;us.zoom.ZoomDaemon.plist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;scott@Songoku:bash-scripts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;➜&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;scott@Songoku:bash-scripts ➜ ll /Library/LaunchDaemonstotal 72drwxr-xr-x  11 root  wheel   352 Apr  8 17:12 .drwxr-xr-x  70 root  wheel  2240 Apr  7 13:30 ..-rw-r--r--@  1 root  wheel   569 Mar 16 14:12 com.backblaze.bzserv.plist-rw-r--r--   1 root  wheel   428 Mar 14 19:02 com.microsoft.autoupdate.helper.plist-rw-r--r--@  1 root  wheel   594 Nov 16 23:23 com.objective-see.blockblock.plist-rw-r--r--@  1 root  wheel   399 Jun 11  2018 com.objective-see.ransomwhere.plist-rw-r--r--@  1 root  wheel   781 Nov 11 09:20 com.rogueamoeba.aceagent.plist-rw-r--r--@  1 root  wheel   777 Nov 11 09:20 com.rogueamoeba.acetool.plist-rw-r--r--   1 root  wheel   598 Apr  8 17:10 com.scottwillsey.my-ip-address.plist-rw-r--r--   1 root  wheel   580 Nov 26 09:26 net.telestream.LicensingHelper.plist-rw-r--r--   1 root  wheel   532 Jan 13 12:26 us.zoom.ZoomDaemon.plistscott@Songoku:bash-scripts ➜&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;As usual, the script itself needs execute permissions.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;+x&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;my-ip-address.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;chmod +x my-ip-address.sh&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;And now I have my IP address in my menu bar!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/OneThingIpAddress-7FBCDC10-F21F-4D8E-AE94-F5276E88F53E.jpg&quot;&gt;&lt;img alt=&quot;The IP address in my menu bar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;446&quot; height=&quot;170&quot; src=&quot;https://scottwillsey.com/_astro/OneThingIpAddress-7FBCDC10-F21F-4D8E-AE94-F5276E88F53E.D4_Ip89u_Z2lY889.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By the way, the IP address shown isn’t really mine. It’s Microsoft’s. Don’t try to DDOS them, but if you do I can only assume they have better DDOS protection than I do.&lt;/p&gt;</content:encoded><summary>Automating displaying my IP address in my menu bar.</summary></item><item><title>AppleScript GPT</title><link>https://scottwillsey.com/applescript-gpt</link><guid isPermaLink="true">https://scottwillsey.com/applescript-gpt</guid><description>ChatGPT doesn&apos;t always get programming right.</description><pubDate>Thu, 06 Apr 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been playing with using ChatGPT (via &lt;a href=&quot;https://www.macgpt.com&quot;&gt;MacGPT&lt;/a&gt;) with the gpt-3.5-turbo model to help script things. Today I wanted an AppleScript to rename some files by sticking a UUID in between the base file name and the file extension (e.g., rename MyImage.png to MyImage-FFE9D8C8-8AEE-42E2-8A48-F0C328A9E5F2.png). I asked MacGPT to write the script and this is what it came up with:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Prompt user to select input directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;inputFolder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;choose folder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; prompt &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Please select the input directory&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Prompt user to select output directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;outputFolderAlias&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;choose folder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; prompt &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Please select the output directory&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;outputFolder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;outputFolderAlias &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Generate a UUID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;uuid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;do shell script&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;uuidgen&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Finder&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Get a list of all files in the input directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileList&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;every&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; folder inputFolder&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;-- Loop through each file and copy it to the output directory with a new name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;aFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileList&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; extension &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;thru&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;((&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileName&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;newName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; baseName &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; uuid &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileExtension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;newFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; outputFolder &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; newName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;duplicate aFile &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; folder outputFolder &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; replacing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;delay&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; newFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; newName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end tell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;-- Prompt user to select input directoryset inputFolder to (choose folder with prompt &amp;#x22;Please select the input directory&amp;#x22;)-- Prompt user to select output directoryset outputFolderAlias to (choose folder with prompt &amp;#x22;Please select the output directory&amp;#x22;)set outputFolder to (outputFolderAlias as string)-- Generate a UUIDset uuid to (do shell script &amp;#x22;uuidgen&amp;#x22;)tell application &amp;#x22;Finder&amp;#x22; -- Get a list of all files in the input directory set fileList to every file of folder inputFolder -- Loop through each file and copy it to the output directory with a new name repeat with aFile in fileList  set fileName to name of aFile  set fileExtension to name extension of aFile  set baseName to text 1 thru ((length of fileName) - (length of fileExtension) - 1) of fileName  set newName to baseName &amp;#x26; &amp;#x22;-&amp;#x22; &amp;#x26; uuid &amp;#x26; &amp;#x22;.&amp;#x22; &amp;#x26; fileExtension  set newFile to outputFolder &amp;#x26; newName  duplicate aFile to folder outputFolder with replacing  delay 3  set name of (file newFile) to newName end repeatend tell&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It actually had &lt;code&gt;delay 1&lt;/code&gt; but I set it to 3.&lt;/p&gt;
&lt;p&gt;But this script is wrong. Running this script generates an error about not being able to rename the apparently already renamed file, complete with UUID, to the desired (same) name, complete with UUID.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;Finder&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;got&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;an&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;error:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Can’t&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Macintosh HD:Users:scott:Documents:Podcasts:FwB:BrewsImages:OUT:Cup_Shots_Kagoshima_800x-559DCE44-3B60-4CE9-8AEE-1A862C6498FA-CBC0F756-F7E3-4368-ACFB-98F4DC50E1BB.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Cup_Shots_Kagoshima_800x-559DCE44-3B60-4CE9-8AEE-1A862C6498FA-CBC0F756-F7E3-4368-ACFB-98F4DC50E1BB.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Finder got an error: Can’t set file &amp;#x22;Macintosh HD:Users:scott:Documents:Podcasts:FwB:BrewsImages:OUT:Cup_Shots_Kagoshima_800x-559DCE44-3B60-4CE9-8AEE-1A862C6498FA-CBC0F756-F7E3-4368-ACFB-98F4DC50E1BB.png&amp;#x22; to &amp;#x22;Cup_Shots_Kagoshima_800x-559DCE44-3B60-4CE9-8AEE-1A862C6498FA-CBC0F756-F7E3-4368-ACFB-98F4DC50E1BB.png&amp;#x22;.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The reason is simple: ChatGPT set the &lt;code&gt;newFile&lt;/code&gt; variable to &lt;code&gt;outputFolder &amp;#x26; newName&lt;/code&gt; and then tries to set the name of &lt;code&gt;file newFile&lt;/code&gt; to &lt;code&gt;newName&lt;/code&gt; later.&lt;/p&gt;
&lt;p&gt;The correct code for the repeat loop section is:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;aFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileList&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; extension &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; aFile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;baseName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;thru&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;((&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileName&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; fileExtension&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;newName&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; baseName &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; uuid &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileExtension&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;newFile&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; outputFolder &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; fileName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;duplicate aFile &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; folder outputFolder &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; replacing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;delay&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; newFile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; newName&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end repeat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;repeat with aFile in fileList set fileName to name of aFile set fileExtension to name extension of aFile set baseName to text 1 thru ((length of fileName) - (length of fileExtension) - 1) of fileName set newName to baseName &amp;#x26; &amp;#x22;-&amp;#x22; &amp;#x26; uuid &amp;#x26; &amp;#x22;.&amp;#x22; &amp;#x26; fileExtension set newFile to outputFolder &amp;#x26; fileName duplicate aFile to folder outputFolder with replacing delay 3 set name of (file newFile) to newNameend repeat&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The only difference here is that now when the newFile variable is created, it’s set to &lt;code&gt;outputFolder &amp;#x26; fileName&lt;/code&gt; (the original filename) so that when it looks for the file to rename, it correctly looks for the original file name.&lt;/p&gt;
&lt;p&gt;I told MacGPT about its mistake and it claims to be glad that I did, but I wonder if it learns that way. I don’t think its model changes based on user feedback, but I don’t really know what all goes into improving its learning.&lt;/p&gt;
&lt;p&gt;By the way, in case you’re wondering why I’m using AppleScript in 2023 for a new task, it’s because I can use AppleScript very simply to tell &lt;a href=&quot;https://flyingmeat.com/retrobatch/&quot;&gt;Retrobatch&lt;/a&gt; to run a saved workflow that crops images to a square ratio and save them as png. Since I’m already running the AppleScript, I’m also using it to stick the UUID into the file names, something I was using a shell script for. I would have just had my Retrobatch workflow run the script, but I couldn’t get it to work correctly and I’m not sure why. The documentation on how the shell script action in Retrobatch works isn’t super comprehensive, and I didn’t find anything in the Flying Meat forum that helped either.&lt;/p&gt;
&lt;p&gt;And to answer what might now be another question of yours, in general I stick a UUID in image file names because I don’t ever want to have to worry about image file name collisions when I shove them in the site images folder. I just want to upload them and be done with it. If I have the UUID in the file name when I start writing my post, all I have to do is make sure none of the images in that particular post have the same name (I use one UUID for all images in a post).&lt;/p&gt;</content:encoded><summary>ChatGPT doesn&apos;t always get programming right.</summary></item><item><title>Bunch of Amphetamine</title><link>https://scottwillsey.com/amphbunch</link><guid isPermaLink="true">https://scottwillsey.com/amphbunch</guid><description>A hyper addition to my podcast workflow that keeps my Mac awake at all times.</description><pubDate>Sun, 19 Mar 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/bunch/&quot;&gt;Last month I wrote&lt;/a&gt; about &lt;a href=&quot;https://bunchapp.co&quot;&gt;Bunch&lt;/a&gt;, a wonderful utility for scripting work sessions, complete with sets of apps and the ability to customize various Mac settings. Last night as I was creating transcripts for &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews,&lt;/a&gt;, I realized that part of my transcription workflow could be handy for podcasting as well – namely, starting an &lt;a href=&quot;https://apps.apple.com/us/app/amphetamine/id937984704?mt=12&quot;&gt;Amphetamine&lt;/a&gt; session.&lt;/p&gt;
&lt;p&gt;Sounds a little extreme, you might be thinking, but it’s actually less controversial than that. &lt;a href=&quot;https://apps.apple.com/us/app/amphetamine/id937984704?mt=12&quot;&gt;Amphetamine&lt;/a&gt; is a Mac utility that can keep your Mac from sleeping for a predetermined period of time, with granularity. Want to let the monitor sleep, but nothing else? Can do. Want to set a trigger so that whenever a specific app is running, Amphetamine is active? Can do!&lt;/p&gt;
&lt;p&gt;In my case, since I already set up for podcasting by running my podcast bunch, I decided to see if I could trigger an Amphetamine session on and off with it. The answer is simple – can do! The reason is William Gustafson, creator of Amphetamine, made it possible to trigger sessions with AppleScript, and Brett Simmons, author of Bunch, supports running AppleScript commands in a bunch. Problem solved.&lt;/p&gt;
&lt;p&gt;Starting an Amphetamine session with AppleScript in a bunch script:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Amphetamine&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; start new session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;* tell application &amp;#x22;Amphetamine&amp;#x22; to start new session&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The asterisk tells Bunch that the following is an AppleScript command. It’s not part of the AppleScript syntax.&lt;/p&gt;
&lt;p&gt;Stopping an Amphetamine session with AppleScript in a bunch:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;tell&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#6CB6FF&quot;&gt;application&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Amphetamine&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; session&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;* tell application &amp;#x22;Amphetamine&amp;#x22; to end session&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Just by adding these lines to my podcast bunch, I now have the ability to stand in front of my Mac for long podcast sessions without touching mouse or keyboard and not having to worry about the screensaver kicking on. Perfect.&lt;/p&gt;</content:encoded><summary>A hyper addition to my podcast workflow that keeps my Mac awake at all times.</summary></item><item><title>Astro Markdown Image Story</title><link>https://scottwillsey.com/astro-markdown-image-story</link><guid isPermaLink="true">https://scottwillsey.com/astro-markdown-image-story</guid><description>Astro&apos;s in a good place - native markdown image optimization is coming, and there is already an excellent third-party option for those who need it now.</description><pubDate>Mon, 13 Mar 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Until now, Astro hasn’t had a built-in way to dump image links in straight Markdown content files and have Astro generate optimized images and responsive HTML for them. This caused me a problem, which I partially solved by using &lt;a href=&quot;https://mdxjs.com&quot;&gt;MDX&lt;/a&gt; instead of Markdown for blog posts, and importing and calling &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;Astro Image&lt;/a&gt; inside the MDX post files. This SOUNDS great, because this is the whole purpose of MDX, &lt;a href=&quot;https://mdxjs.com&quot;&gt;in MDX’s own words&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MDX allows you to use JSX in your markdown content. You can import components, such as interactive charts or alerts, and embed them within your content. This makes writing long-form content with components a blast. &lt;span role=&quot;img&quot; aria-label=&quot;rocket&quot;&gt;🚀&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are, however, a couple problems with this. One of them I’ve spoken about on this site, which is MDX makes it very hard to generate full-content RSS feeds with Astro (&lt;a href=&quot;https://scottwillsey.com/rss-pt1/&quot;&gt;part 1&lt;/a&gt; and &lt;a href=&quot;https://scottwillsey.com/rss-pt2/&quot;&gt;part 2&lt;/a&gt; of that saga &lt;a href=&quot;https://scottwillsey.com/rss-pt1/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://scottwillsey.com/rss-pt2/&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Also, using the Astro Image component directly in my content means mixing writing and implementation details, something I strongly dislike. When I’m writing a blog post, I don’t WANT to have to remember Astro Image syntax, and I don’t WANT to have to remember exactly what widths I like to specify and what media-query-ish styling I put in the &lt;code&gt;sizes&lt;/code&gt; attribute. I just want to write and to let my system handle all that by itself. That’s what computers are for.&lt;/p&gt;
&lt;p&gt;Here’s what it looks like when I want to put an image in one of my posts using MDX as my content file format and the Astro Image component directly inside my blog post:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Picture&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/image/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;somethingSomething&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/posts/somethingsomething.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;somethingSomething&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;900&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1500&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 800px) 90vw, 800px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;This is a lot of work just to drop an image in a blog post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I don’t want to remember that. I never want to think about that at all. I want to put an image link in using standard markdown and have Astro do all that for me.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;This is a lot of work just to drop an image in a blog post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;](&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--0td:underline;--1:#000000;--1td:underline;--2:#96D0FF;--2td:underline&quot;&gt;../../assets/images/posts/somethingsomething.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;/images/posts/somethingsomething.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[![This is a lot of work just to drop an image in a blog post](../../assets/images/posts/somethingsomething.png)](/images/posts/somethingsomething.png)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I have two pieces of good news for you if you’re in the same boat as me:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The wonderful people at Astro are building an &lt;a href=&quot;https://docs.astro.build/en/guides/assets/&quot;&gt;Astro Assets integration&lt;/a&gt; that can create optimized versions of and responsive img tags for images linked to in Markdown.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the meantime, you can use the really nice and fully functional &lt;a href=&quot;https://github.com/ChrisOh431/astro-remark-eleventy-image&quot;&gt;Astro Markdown Eleventy Image Astro component&lt;/a&gt; by &lt;a href=&quot;https://cjohanaja.com/&quot;&gt;CJ Ohanaja&lt;/a&gt;. As you may have guessed, it uses &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;Eleventy Image&lt;/a&gt; to do the work of intercepting Markdown image links and replacing them with responsive ones (and generating the responsive images themselves, of course).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Astro Assets integration loudly proclaims itself as experimental, and that’s not self-deprecation: it won’t build. It runs great in the dev server, but it gives all kinds of wacky errors when trying to build. But just using it in dev mode is enough to see the future, and it’s great.&lt;/p&gt;
&lt;p&gt;As for Astro Markdown Eleventy Image, it works great in build, but it doesn’t bother to optimize anything in dev mode. That means if you use the browser inspector tools to look at your images while testing in dev mode, you’ll see gigantic original file sizes. You’ll have to build and run preview to serve up the built pages locally to see its handiwork.&lt;/p&gt;
&lt;p&gt;But the good news is, you can quit or never start using MDX right this minute, and you can still have optimized images from Markdown image links with Astro.&lt;/p&gt;
&lt;p&gt;By the way, in case you’ve forgotten my RSS story at the start of this, now that I’m using straight Markdown files for my posts again, I can just straight up go back to using &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/rss&quot;&gt;Astro RSS&lt;/a&gt; and generate an RSS feed with full post content, and not have to do my hacky custom nonsense anymore.&lt;/p&gt;
&lt;p&gt;That’s such good news for me, because that hack only generated the RSS file in dev mode, so every time I did a build I had to copy the RSS.xml to the dist folder, AND remember to change all the link prefixes from &lt;code&gt;http://localhost:3000&lt;/code&gt; to &lt;code&gt;https://scottwillsey.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Another annoying implementation detail I never want to think about again, vanquished!&lt;/p&gt;</content:encoded><summary>Astro&apos;s in a good place - native markdown image optimization is coming, and there is already an excellent third-party option for those who need it now.</summary></item><item><title>Friends with Transcripts</title><link>https://scottwillsey.com/friends-with-transcripts</link><guid isPermaLink="true">https://scottwillsey.com/friends-with-transcripts</guid><description>Friends with Brews podcast now has episode transcripts!</description><pubDate>Mon, 06 Mar 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I &lt;a href=&quot;https://scottwillsey.com/whispering-transcripts/&quot;&gt;talked before about Whisper.cpp&lt;/a&gt; and my goal of getting episode transcripts up on the &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews website&lt;/a&gt;. That day is here! We now have transcript functionality on the site.&lt;/p&gt;
&lt;p&gt;You’ll notice I said transcript functionality. I’m weasel-wording it a bit there because now I need to generate transcripts for all the episodes. So far I have them for episodes &lt;a href=&quot;https://friendswithbrews.com/transcripts/T1/&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://friendswithbrews.com/transcripts/T22/&quot;&gt;22&lt;/a&gt;, and &lt;a href=&quot;https://friendswithbrews.com/transcripts/T26/&quot;&gt;26&lt;/a&gt; (the current podcast episode as of this writing).&lt;/p&gt;
&lt;p&gt;On the Friends with Brews homepage, click the Transcripts link under the podcast description paragraph, and you’ll see a list of available transcripts.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FwBTranscriptsList-E53278B1-70FC-4D24-9EA3-DA1AC8B622A4.jpg&quot;&gt;&lt;img alt=&quot;Friends with Brews episode transcripts&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2140&quot; height=&quot;1308&quot; src=&quot;https://scottwillsey.com/_astro/FwBTranscriptsList-E53278B1-70FC-4D24-9EA3-DA1AC8B622A4.D-Gtyquk_Z1kaTog.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In addition, any episodes with available transcripts will show a transcript link under its episode title.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FwBEpisodeTranscriptLink-E53278B1-70FC-4D24-9EA3-DA1AC8B622A4.jpg&quot;&gt;&lt;img alt=&quot;Episode transcript link&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1594&quot; height=&quot;478&quot; src=&quot;https://scottwillsey.com/_astro/FwBEpisodeTranscriptLink-E53278B1-70FC-4D24-9EA3-DA1AC8B622A4.C_128vRb_Z1UJz88.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The transcript pages themselves have links to the episode page, to the transcripts index, and to the episodes index, in addition to an episode description followed by the transcript.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/FwB-026Transcript-E53278B1-70FC-4D24-9EA3-DA1AC8B622A4.jpg&quot;&gt;&lt;img alt=&quot;Episode 26 transcript&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2034&quot; height=&quot;1564&quot; src=&quot;https://scottwillsey.com/_astro/FwB-026Transcript-E53278B1-70FC-4D24-9EA3-DA1AC8B622A4.DJ20igHf_10jmM4.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I still have more work to do on this feature. I plan to make the raw transcripts downloadable, and also to integrate them into the RSS feed with srt formatting, at the suggestion of &lt;a href=&quot;https://engineered.space/users/chidgey&quot;&gt;John Chidgey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One thing you’ll notice right away is the transcripts are not perfect. I haven’t done any A B testing yet, but I think the transcript better separates transitions in speakers if I only output the transcript as a raw text file and don’t simultaneously output the srt file and the raw text file. At any rate, Whisper.cpp doesn’t know about individual speakers, and so there are no names showing who is saying what.&lt;/p&gt;
&lt;p&gt;Also, Whisper gets some things wrong, and there will occasionally be some confusing text that doesn’t exactly match what we were saying at that point. Overall though, I think they’re pretty good and at least you can search the site and find what episode contained some specific mention of something. Again, it’s not perfect - if you search for Shaquille O’Neal (mentioned in &lt;a href=&quot;https://friendswithbrews.com/1/&quot;&gt;episode 1&lt;/a&gt;), you won’t find him, because the transcript butchered the spelling of his name and I didn’t fix every typo that Whisper.cpp made.&lt;/p&gt;
&lt;p&gt;Still, I think having transcripts, even imperfect ones, is a net gain for the site and the podcast. It adds more work for me as I have to generate them and then clean them up, but now that I have the functionality built into my &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; code, getting newly generated transcripts published is a snap.&lt;/p&gt;</content:encoded><summary>Friends with Brews podcast now has episode transcripts!</summary></item><item><title>Dimensions are a Nightmare</title><link>https://scottwillsey.com/dimensions</link><guid isPermaLink="true">https://scottwillsey.com/dimensions</guid><description>Responsive Image handling still has some problems, at least to my knowledge.</description><pubDate>Sun, 19 Feb 2023 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve written so much about images and image optimization and yet the reality is I still have no clue exactly how it works.&lt;/p&gt;
&lt;p&gt;Case in point: I installed &lt;a href=&quot;https://cjohanaja.com&quot;&gt;Christian Ohanaja&lt;/a&gt;’s &lt;a href=&quot;https://github.com/ChrisOh431/astro-remark-eleventy-image&quot;&gt;Astro Remark Eleventy Image&lt;/a&gt; plugin to parse my &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; show notes markdown files and replace any markdown images with responsive images (it both generates the image sources and creates the responsive HTML, as with any real image optimizer).&lt;/p&gt;
&lt;p&gt;In the version I installed at the time, I immediately found that because the large source image’s width and height were included in the img element’s width and height properties, the browser ignored the size directives in the sources, and displayed the image at the x and y dimensions specified in the img tag.&lt;/p&gt;
&lt;p&gt;Kind of defeats the point of size directives.&lt;/p&gt;
&lt;p&gt;This is NOT an issue with Astro Remark Eleventy Image. In fact Christian now allows custom HTML markup to override this. This happens with any Picture element that includes an img tag with width and height properties. It doesn’t matter if it’s handwritten, generated by this plugin, generated directly using eleventy-img, or generated using some other image optimization plugin or scheme.&lt;/p&gt;
&lt;p&gt;The biggest issue with NOT including them so that the browser respects the size directives instead is that now you’re subject to Cumulative Layout Shift (CLS)&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; because the browser doesn’t understand how large the image will be in advance.&lt;/p&gt;
&lt;p&gt;If anyone knows of a way to use Picture element sizes without overriding them unintentionally with img height and width but still managing to avoid CLS, I’d love to hear more about it. &lt;a href=&quot;https://appdot.net/@scottaw&quot;&gt;Tell me&lt;/a&gt;!&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.smashingmagazine.com/2021/06/how-to-fix-cumulative-layout-shift-issues/&quot;&gt;How To Fix Cumulative Layout Shift (CLS) Issues — Smashing Magazine&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Responsive Image handling still has some problems, at least to my knowledge.</summary></item><item><title>Bunch</title><link>https://scottwillsey.com/bunch</link><guid isPermaLink="true">https://scottwillsey.com/bunch</guid><description>Bunch is an amazing little automation tool for controlling work environments on your Mac.</description><pubDate>Tue, 14 Feb 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve written a bunch of words on this site about programming stuff in &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, but there are bunches of other things that can be scripted too. Literal Bunches in fact – enter &lt;a href=&quot;https://bunchapp.co&quot;&gt;Bunch&lt;/a&gt;, a Mac automation app for launching apps and running commands with just a click. It’s written by &lt;a href=&quot;https://brettterpstra.com&quot;&gt;Brett Terpstra&lt;/a&gt;, which is a name any Mac automation geek will know.&lt;/p&gt;
&lt;p&gt;Bunch works as a menubar app that lists your &lt;a href=&quot;https://bunchapp.co/docs/bunch-files/&quot;&gt;Bunches&lt;/a&gt;. Click on a Bunch in the list, and it executes whatever is inside that Bunch, be it names of apps to launch or to close, or commands that can include system tasks, AppleScripts, Automator workflows, or even Bash scripts.&lt;/p&gt;
&lt;p&gt;By default, Bunches are toggles – the first time you click on a Bunch name in the menubar list, the Bunch opens. Any apps or commands that are set to open or run do so. The next time you click the Bunch in the menubar list, it does the reverse. It closes any apps that are not explicitly set to remain open when the Bunch is toggled off (or “closed”, in Bunch parlance). It also runs any commands you have set up specifically to run when the Bunch is closed.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Bunch-menu-bar-01F5FA78-F3B1-4D2D-B163-E1361EA70ABF.jpg&quot;&gt;&lt;img alt=&quot;Bunch menubar menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;954&quot; height=&quot;354&quot; src=&quot;https://scottwillsey.com/_astro/Bunch-menu-bar-01F5FA78-F3B1-4D2D-B163-E1361EA70ABF.9zQvIGcO_Zm198q.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Talking about in the abstract isn’t super helpful. So here’s a podcast Bunch of mine! Please note that I’m still not super fluent in Bunch and this is void where prohibited and etc, etc, etc.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Podcast&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;call_app &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ?[FaceTime, Discord, Skype, Zoom] &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Which calling app?&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Farrago&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;call_app&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;%Safari&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;https&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;docs.google.com&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;%Finder&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Documents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Podcasts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;FwB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Library&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Mobile Documents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;com~apple~CloudDocs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Documents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Podcasts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;FwB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Music&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Audio Hijack&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Audio Hijack&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;audio output AirThingies&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;audio input Shure Beta &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;87&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;a &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; Farrago&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#On Close&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;___&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#[On Close]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;studio &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; $ studio_display_check.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; studio &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;audio output studio display speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;audio output MacBook Pro Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;---title: Podcast---call_app = ?[FaceTime, Discord, Skype, Zoom] &amp;#x22;Which calling app?&amp;#x22;Farrago${call_app}%Safarihttps://docs.google.com/%Finder- ~/Documents/Podcasts/FwB- ~/Library/Mobile Documents/com~apple~CloudDocs/Documents/Podcasts/FwB- ~/Music/Audio HijackAudio Hijack^(audio output AirThingies)(audio input Shure Beta 87a &amp;#x26; Farrago)!&lt;&lt;#On Close___#[On Close]studio = $ studio_display_check.shif studio is &amp;#x22;true&amp;#x22;    (audio output studio display speakers)else    (audio output MacBook Pro Speakers)end&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s a lot. Here’s how it works:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; Podcast&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;---title: Podcast---&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This top section is frontmatter and just determines what this Bunch is called in the menubar.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;call_app = ?[FaceTime, Discord, Skype, Zoom] &quot;Which calling app?&quot;&lt;/code&gt; pops up a dialog box with a menu too choose which app I’m talking to cohosts on. Truthfully, it’s going to almost always be FaceTime for &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt;, but other people on other podcasts use different ones. Slight aside, I’m a firm believer of podcasters always recording their end locally and the editor using all the original (better sounding) tracks, but not everyone does this.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Farrago&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;call_app&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Farrago${call_app}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The next couple lines open my soundboard app &lt;a href=&quot;https://rogueamoeba.com/farrago/&quot;&gt;Farrago&lt;/a&gt; and then whichever communication app I selected from the menu mentioned above.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;%Safari&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;https&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;docs.google.com&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;%Safarihttps://docs.google.com/&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;These two lines open Safari and then load Google Docs, which we use for show notes. The &lt;code&gt;%Safari&lt;/code&gt; notation with the percent sign means that when I close the bunch, Safari is not closed along with the other apps in this bunch, but stays open.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;%Finder&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Documents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Podcasts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;FwB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Library&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Mobile Documents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;com~apple~CloudDocs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Documents&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Podcasts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;FwB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Music&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;Audio Hijack&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;%Finder- ~/Documents/Podcasts/FwB- ~/Library/Mobile Documents/com~apple~CloudDocs/Documents/Podcasts/FwB- ~/Music/Audio Hijack&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This section opens a finder window and opens tabs for me with some podcast related file locations.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Audio Hijack^&lt;/code&gt; just opens Audio Hijack and makes it the active (focused) program.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;audio output AirThingies&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;audio input Shure Beta &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;87&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;a &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; Farrago&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;(audio output AirThingies)(audio input Shure Beta 87a &amp;#x26; Farrago)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;These illustrate one of Bunch’s coolest features, the ability to call system level commands. These lines do just what they look like: They set my Mac to output audio through my AirPods Pro and to use my virtual &lt;a href=&quot;https://rogueamoeba.com/loopback/&quot;&gt;Loopback&lt;/a&gt; device that combines my mic and my soundboard as my audio in. This means I can set FaceTime or Zoom (or whatever app we’re talking on) to use this as its audio input, and my cohosts can hear whatever I play on the soundboard.&lt;/p&gt;
&lt;p&gt;I’m going to cover the rest of this Bunch all at once.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;applescript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#On Close&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;___&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;#[On Close]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;studio &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; $ studio_display_check.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; studio &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;audio output studio display speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;audio output MacBook Pro Speakers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;!&lt;&lt;#On Close___#[On Close]studio = $ studio_display_check.shif studio is &amp;#x22;true&amp;#x22;    (audio output studio display speakers)else    (audio output MacBook Pro Speakers)end&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Basically the first line of this says “hey, when this Bunch is closed (toggled off), run the #On Close snippet”. The On Close snippet is in a special section at the bottom that is reserved for any snippets or snippet fragments you want to include.&lt;/p&gt;
&lt;p&gt;My On Close snippet just runs a shell script located in the same folder as the Bunch to see if I’m connected to my Studio Display or not, and if I am, sets the output back to the Studio Display speakers. Otherwise, it sets the output to the Mac’s internal speakers.&lt;/p&gt;
&lt;p&gt;Because this only runs when the Bunch is closed, meaning I’m done podcasting, this is exactly what I want.&lt;/p&gt;
&lt;p&gt;This looks confusing, and I’m not going to lie – it took me awhile to get this working the way I wanted. Part of my issue was that I didn’t understand how Bunches work by default, and I thought I had to make a “Start Podcasting” Bunch and a “Stop Podcasting Bunch”, not realizing that it was set to toggle and just by choosing “Podcasting” again it would close any apps I didn’t explicitly say not to close. The rest of it was just learning the syntax. Fortunately, Brett has written &lt;a href=&quot;https://bunchapp.co/docs/&quot;&gt;excellent documentation for Bunch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The fact that you can use conditional logic and use the output from shell scripts and set system settings and so many other things makes this a super flexible, powerful automation tool for the Mac. I used to open all these programs and set my audio settings manually, and now it requires just that many fewer clicks every time I want to podcast.&lt;/p&gt;
&lt;p&gt;By the way, Brett has many more amazing utilities. Check out &lt;a href=&quot;https://brettterpstra.com/projects/gather-cli/&quot;&gt;Gather CLI&lt;/a&gt;, for example, which lets you fetch the contents of a web page and have them converted to markdown syntax. It’s amazing and it’s perfect for doing things like saving information to &lt;a href=&quot;https://obsidian.md&quot;&gt;Obsidian&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>Bunch is an amazing little automation tool for controlling work environments on your Mac.</summary></item><item><title>Astro Remark Eleventy Image</title><link>https://scottwillsey.com/astro-remark-eleventy-image</link><guid isPermaLink="true">https://scottwillsey.com/astro-remark-eleventy-image</guid><description>Christian Ohanaja&apos;s Astro Remark Eleventy Image plugin.</description><pubDate>Tue, 07 Feb 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So there I was, playing with &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;eleventy-img&lt;/a&gt; to find a way to &lt;a href=&quot;https://scottwillsey.com/episode-image-script/&quot;&gt;generate responsive images for image links in markdown files&lt;/a&gt;, when &lt;a href=&quot;https://cjohanaja.com&quot;&gt;Christian Ohanaja&lt;/a&gt; did the work for me and created the &lt;a href=&quot;https://github.com/ChrisOh431/astro-remark-eleventy-image&quot;&gt;Astro Remark Eleventy Image&lt;/a&gt; plugin.&lt;/p&gt;
&lt;p&gt;I’m glad he did too, because looking at the remark part of the code, I feel confusion more than anything. I guess I have another rabbit hole to pop down to learn about THAT.&lt;/p&gt;
&lt;p&gt;Anyway, being the true jerk that I am, instead of just being grateful and using his plugin, I forked it to add some additional options (such as the ability for the inline image to link to the high resolution version) and to add an Astro component for image optimization. That way I can have one plugin that provides image optimization in both markdown files and inside Astro components.&lt;/p&gt;
&lt;p&gt;I’m assuming that I can technically combine a plugin and an Astro component in one project. I actually have no idea, but I’ll find out.&lt;/p&gt;</content:encoded><summary>Christian Ohanaja&apos;s Astro Remark Eleventy Image plugin.</summary></item><item><title>Whispering Podcast Transcripts</title><link>https://scottwillsey.com/whispering-transcripts</link><guid isPermaLink="true">https://scottwillsey.com/whispering-transcripts</guid><description>Whisper.cpp is a C/C++ port of OpenAI&apos;s Whisper that might meet your needs for audio transcription.</description><pubDate>Wed, 25 Jan 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In what feels like a lifetime ago, I had a podcast called Pocket Sized Podcast, talking about iOS apps and devices, mostly. At some point, for reasons I can’t even begin to recall, I joined up with a fledgling podcast network called Fiat Lux, which was later rebranded Constellation by the two fairly angry guys running it. The whole thing was a giant fiasco full of insane stories, but it’s relevant to me now because podcast transcription is having a moment.&lt;/p&gt;
&lt;p&gt;Fiat Lux/Constellation decided that the core feature of the podcast network would be incredibly detailed show notes on all podcasts. Unfortunately they had some really bad ideas about exactly what those show notes should be like.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; None of us wanted anything to do with their plan, mainly because of how they presented it and the amount of shouting involved in their attempts to convince us.&lt;/p&gt;
&lt;p&gt;If you’re going to try to herd cats, you’d better be a cat person is what I’m saying.&lt;/p&gt;
&lt;p&gt;But the idea of making podcast episodes available in text &lt;strong&gt;IS&lt;/strong&gt; a good idea, and several very popular podcasters I know of are looking at all kinds of options for creating good transcripts without spending hours and hours on them.&lt;/p&gt;
&lt;p&gt;There are several paid and soon-to-be-paid options such as &lt;a href=&quot;https://podcast.adobe.com&quot;&gt;Adobe Podcast&lt;/a&gt; (currently in beta, pricing to be determined), and &lt;a href=&quot;https://otter.ai&quot;&gt;Otter&lt;/a&gt;. But the completely free option that got my attention is a Mac port of OpenAI’s &lt;a href=&quot;https://github.com/openai/whisper&quot;&gt;Whisper&lt;/a&gt;, called &lt;a href=&quot;https://github.com/ggerganov/whisper.cpp&quot;&gt;Whisper.cpp&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Whisper runs locally on your own machine, and Whisper.cpp jettisons the Python runtime for C and C++, which has obvious positive performance implications. Better yet, it’s even optimized for Apple Silicon.&lt;/p&gt;
&lt;p&gt;I heard about Whisper.cpp while listening to &lt;a href=&quot;https://rebuild.fm&quot;&gt;Rebuild&lt;/a&gt; from &lt;a href=&quot;https://mastodon.social/@miyagawa&quot;&gt;Tatsuhiko Miyagawa&lt;/a&gt;, a very enjoyable Japanese language tech podcast. It’s actually one of my favorite podcasts in any language. Anyway, at the time Miyagawa-san was experimenting with Whisper.cpp on his new Apple Silicon Mac, and I filed that information away in my brain, figuring it would be some time before I got an Apple Silicon Mac of my own. It was, but now I have, and so I recently jumped into performing Whisper.cpp experiments of my own.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Whisper.cpp has several &lt;a href=&quot;https://github.com/ggerganov/whisper.cpp/tree/master/models&quot;&gt;models&lt;/a&gt; you can download, depending on what kind of quality vs time tradeoffs you want to make. I’ve tested Whisper.cpp on &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; episodes using the ggml-base.en.bin, ggml-medium.en.bin, and ggml-large.bin models, with interestingly varying results.&lt;/p&gt;
&lt;p&gt;The first thing I found is that the base model is &lt;strong&gt;FAST&lt;/strong&gt;. I transcribed a 50 minute podcast episode in about a minute with decent results. I had to fix a few names and technical terms, but otherwise it was quite good.&lt;/p&gt;
&lt;p&gt;I couldn’t tell a huge difference between the medium and large models with the two particular episodes I experimented with, but the time difference between all three models was noticeable. I tested all three models on &lt;a href=&quot;https://friendswithbrews.com/21/&quot;&gt;Friends with Brews episode 21&lt;/a&gt;, which is 45 minutes and 29 seconds long and roughly 24 MB in size.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base.en&lt;/strong&gt; – 1.5 minutes&lt;br&gt;
&lt;strong&gt;Medium.en&lt;/strong&gt; – 10 minutes&lt;br&gt;
&lt;strong&gt;Large&lt;/strong&gt; – 19 minutes&lt;/p&gt;
&lt;p&gt;Even with the large model, transcribing a podcast at 2x speed is pretty good.&lt;/p&gt;
&lt;p&gt;The end result is that I think it’s worth going with the medium or large models. It’ll cost you disk space – the base english model is 142MB, the medium english model is 1.5GB, and the large model is 2.9GB. But I think it’s worth it in terms of results.&lt;/p&gt;
&lt;p&gt;You may have to do some testing to decide between the medium and large though, even if you’re convinced that the base model isn’t the way to go. Generally I think I like the large model results better, but there are some instances where the medium transcribed something more accurately.&lt;/p&gt;
&lt;p&gt;Personally I’m using the large model, but that’s because I’m actually using yet another port, which I’ll talk about in another post very soon.&lt;/p&gt;
&lt;p&gt;By the way, if you want to hear the Fiat Lux/Constellation stories, just slip &lt;a href=&quot;https://appdot.net/@vichudson1&quot;&gt;@Vichudson1@appdot.net&lt;/a&gt; a nice glass of whiskey.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; He has a much better memory than I do about pretty much anything in the past, and especially about the saga of the world’s unhappiest podcast network.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Including wanting markdown format in Google Docs specifically as opposed to any plaintext document format (like, I don’t know, .md?), but whatever. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;Whisper.cpp actually runs on Intel Silicon too, but I didn’t realize it at the time. But my late 2015 iMac probably would have barfed up a lung on it anyway. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;Fair warning, he’ll probably try to get you to buy him more than one. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Whisper.cpp is a C/C++ port of OpenAI&apos;s Whisper that might meet your needs for audio transcription.</summary></item><item><title>Podcast Episode Image Script</title><link>https://scottwillsey.com/episode-image-script</link><guid isPermaLink="true">https://scottwillsey.com/episode-image-script</guid><description>The optimized image generation step in my podcast show notes image workflow.</description><pubDate>Mon, 09 Jan 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As &lt;a href=&quot;https://scottwillsey.com/more-astro-image-markdown/&quot;&gt;I mentioned in my last post&lt;/a&gt;, I want to use standard markdown (text only, no ability to use components) for &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; episodes so that I can use &lt;a href=&quot;https://docs.astro.build/en/guides/rss/#including-full-post-content&quot;&gt;Astro’s ability to render full post body content&lt;/a&gt; of each episode in the RSS feed. This way the RSS feed shows each episode’s show notes instead of just a summary.&lt;/p&gt;
&lt;p&gt;Step 1 of the Great Show Note Images odyssey is generating optimized versions of any images to be included in episode show notes. Figuring out which images those are is easy – I have a directory named src/images/episodes, and I’ll just dump my images in there.&lt;/p&gt;
&lt;p&gt;From there it’s a matter of reading all the files in the directory, generating the desired sizes, and dumping them in public/images/episodes, which in the published site will be located at /images/episodes.&lt;/p&gt;
&lt;p&gt;Because I’m not doing this inside an Astro file with pre-imported or pre-linked images, I can’t use the Astro Image component like I do for all the other images on the &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews website&lt;/a&gt;. I need something I can call from a JavaScript function. Fortunately, as I noted last time, I can use the eleventy-image plugin this way. Ben Holmes details how on his website in &lt;a href=&quot;https://bholmes.dev/blog/picture-perfect-image-optimization/&quot;&gt;Picture perfect image optimization for any web framework&lt;/a&gt; article.&lt;/p&gt;
&lt;p&gt;If you look at section 4 of his post, Using 11ty image with any framework, you can see a script Ben wrote to look in a directory and generate optimized images for each image file in the directory in the specified widths and formats using the Node package &lt;a href=&quot;https://www.npmjs.com/package/@11ty/eleventy-img&quot;&gt;@11ty/eleventy-img&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I modified the script a little bit as shown below. I &lt;em&gt;would&lt;/em&gt; have included it as a code block instead of an image, but for some reason it triggers modsecurity on my server and blocks the IP of whoever tries to load this page. Not exactly ideal.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/episode-image-script-1.png&quot;&gt;&lt;img alt=&quot;Image optimization script&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1668&quot; height=&quot;1274&quot; src=&quot;https://scottwillsey.com/_astro/episode-image-script-1.CkDFvAhj_2tNLwq.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If I run this script with the following images in src/images/episodes&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;571969&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Oct&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;2020&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389.jpg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;723612&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;23:20&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;-rw-r--r--@ 571969 Oct  4  2020 18749389.jpg-rw-r--r--@ 723612 Jan  4 23:20 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602.png&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;the script generates the following images in public/images/episodes:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;11229&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-1000.avif&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;54111&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-1000.jpeg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;29588&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-1000.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;15438&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-1400.avif&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;85912&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-1400.jpeg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;44008&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-1400.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;41218&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-4000.avif&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;331928&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-4000.jpeg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;150688&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-4000.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;6960&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-600.avif&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;26053&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-600.jpeg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;16014&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;18749389-600.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;30453&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-600.avif&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;78709&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-600.jpeg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;60118&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-600.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;38504&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-677.avif&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;98443&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-677.jpeg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#795E26;--2:#F69D50&quot;&gt;-rw-r--r--@&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;78596&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;Jan&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;13:36&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-677.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;-rw-r--r--@ 11229 Jan  9 13:36 18749389-1000.avif-rw-r--r--@ 54111 Jan  9 13:36 18749389-1000.jpeg-rw-r--r--@ 29588 Jan  9 13:36 18749389-1000.webp-rw-r--r--@ 15438 Jan  9 13:36 18749389-1400.avif-rw-r--r--@ 85912 Jan  9 13:36 18749389-1400.jpeg-rw-r--r--@ 44008 Jan  9 13:36 18749389-1400.webp-rw-r--r--@ 41218 Jan  9 13:36 18749389-4000.avif-rw-r--r--@ 331928 Jan  9 13:36 18749389-4000.jpeg-rw-r--r--@ 150688 Jan  9 13:36 18749389-4000.webp-rw-r--r--@ 6960 Jan  9 13:36 18749389-600.avif-rw-r--r--@ 26053 Jan  9 13:36 18749389-600.jpeg-rw-r--r--@ 16014 Jan  9 13:36 18749389-600.webp-rw-r--r--@ 30453 Jan  9 13:36 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-600.avif-rw-r--r--@ 78709 Jan  9 13:36 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-600.jpeg-rw-r--r--@ 60118 Jan  9 13:36 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-600.webp-rw-r--r--@ 38504 Jan  9 13:36 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-677.avif-rw-r--r--@ 98443 Jan  9 13:36 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-677.jpeg-rw-r--r--@ 78596 Jan  9 13:36 ChonkChart-816246A9-8775-4561-B9DA-1D9E7E0413B1-20220323095602-677.webp&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is good news. First of all, Ben did all of my work for me. Second, I can generate optimized images without having to know anything about them in advance. Now I just have the very little problem of replacing image links in my episode markdown file with &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture&quot;&gt;picture elements&lt;/a&gt; that contain the sources for the different file types and srcsets for each of the different image sizes.&lt;/p&gt;
&lt;p&gt;By the way, check out the file size differences on the optimized versions versus the originals in those file listings! Even the full width and height optimized images are quite a bit smaller in terms of file size than the originals, and the smaller ones are minute compared to the images I started with.&lt;/p&gt;
&lt;p&gt;A couple of things I’d like to note about working with &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;eleventy-img&lt;/a&gt; here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eleventy-img doesn’t stupidly try to generate image sizes larger than the original. If you specify &lt;code&gt;widths: [&quot;auto&quot;, 600, 1000, 1400]&lt;/code&gt; and one of the images is only 677 pixels wide, it will only generate the 600 and 677 pixel width versions (the “auto” option tells eleventy-img to also make a copy at the original size).&lt;/li&gt;
&lt;li&gt;As you must have guessed by now, just because eleventy-img was developed as a plugin for the Eleventy SSG framework, it’s just JavaScript and can be installed with npm and used with any other Node.js compatible framework. That includes Astro.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next time I write anything on this site, it may be completely incoherent depending on what Rube Goldberg mechanism I come up with for getting the responsive html for images into my show notes markdown files in the correct location. My writing workflow allows for a few different possibilities since I already know in advance the default width I want these images. Maybe next time I’ll detail that workflow and what options I think might be available to me, and then we can get into implementation.&lt;/p&gt;</content:encoded><summary>The optimized image generation step in my podcast show notes image workflow.</summary></item><item><title>More on Astro, Image Optimization, and Markdown</title><link>https://scottwillsey.com/more-astro-image-markdown</link><guid isPermaLink="true">https://scottwillsey.com/more-astro-image-markdown</guid><description>A continuing journey to get image optimization for markdown files with Astro.</description><pubDate>Sat, 07 Jan 2023 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve talked a lot about image optimization and RSS feed handling with &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt;. I’m about to talk about it some more. I presume you’re like me and obsess endlessly about these topics, so you should enjoy this.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; In my case, I don’t know how much of it is enjoyment and how much of it is a compulsive search for a better way.&lt;/p&gt;
&lt;p&gt;Now that Astro has support for full post content RSS feeds with the &lt;a href=&quot;https://docs.astro.build/en/guides/rss/#including-full-post-content&quot;&gt;compiledContent property for markdown content&lt;/a&gt;, I modified &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews&lt;/a&gt; to use standard markdown files (.md) instead of &lt;a href=&quot;https://mdxjs.com&quot;&gt;MDX&lt;/a&gt; (.mdx). My reasoning was that, since I almost never include images in the show notes for Friends with Brews and since using standard markdown would let me use compiledContent to put full episode show notes in the podcast RSS feed, it was an automatic must-do.&lt;/p&gt;
&lt;p&gt;Unfortunately for me, the second I made the switch, I needed to add an image to the show notes of an upcoming episode, which would make it the second time I’ve had to add an image to FwB show notes. The first time was back on episode 8, &lt;a href=&quot;https://friendswithbrews.com/8/&quot;&gt;Satan is not normally depicted as being purple&lt;/a&gt;, and that was the critical piece of visual information known as the Chonk Chart.&lt;/p&gt;
&lt;p&gt;If I have to do anything more than once, it means I will have to do it several times, and that means I have to support it properly. And that means being able to combine image optimization AND standard markdown in Astro, and that’s not currently possible - the &lt;a href=&quot;https://docs.astro.build/en/guides/images/#astros-image-integration&quot;&gt;Astro Image components are only supported in Astro and MDX files&lt;/a&gt;, for the obvious reason that they’re components, and markdown can’t execute components.&lt;/p&gt;
&lt;p&gt;I can continue to process the usual images of episode brews (coffee, beer, tea) with Astro image in my layout templates, as well as all the other images used on the site, so that’s not a problem. Those brew images are not actually in the show notes. Instead, I have a JSON file of brews that contains a bunch of information about them, including which episode(s) they’re associated with. So I only have to concern myself with how to optimize the inline images in the show notes markdown files.&lt;/p&gt;
&lt;p&gt;The good news is that manually writing Picture elements complete with sources and srcsets and default images is simple. And if it’s simple for a human, it’s simple for a script. I can easily assume a certain standard width for images I’m going to put in my show notes, and then generate optimized images for that size plus 2x and 3x resolutions, as well as the original for linking to. Then the html for the Picture element associated with the optimized images can be generated fairly simply. Ben Holmes, who now works for Astro, &lt;a href=&quot;https://bholmes.dev/blog/picture-perfect-image-optimization/&quot;&gt;has a post about this approach using eleventy-image&lt;/a&gt;. Because &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;eleventy-image&lt;/a&gt; can be manipulated directly in JavaScript, it’s a great candidate for this.&lt;/p&gt;
&lt;p&gt;So here’s the plan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Continue to optimize permanent site images and episode brew images using the Astro Image components in my Astro layout files,&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;eleventy-image&lt;/a&gt; to optimize inline show notes images to predetermined widths and image formats,&lt;/li&gt;
&lt;li&gt;Figure out how to insert the associated Picture elements for the optimized images into my markdown files. This step might take the most work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you noticed that the last step of the plan looks a bit like the Far Side cartoon with scientists drawing out a diagram of the creation of the universe with a “and then a miracle occurs” note tagged onto the end, it’s true. The good news is, there are several places in my writing and publishing workflow I can inject the html. I’ll write more about that as I start implementing a system.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;If you aren’t endlessly obsessed with these topics, we need to talk about that. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>A continuing journey to get image optimization for markdown files with Astro.</summary></item><item><title>Astro RSS 1.2.0 Update</title><link>https://scottwillsey.com/astro-rss-update</link><guid isPermaLink="true">https://scottwillsey.com/astro-rss-update</guid><description>Astro fixed a bug with Astro RSS that broke custom content.</description><pubDate>Tue, 13 Dec 2022 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier today I posted about the new compiledContent() property for use in Astro RSS. What I didn’t mention was that Astro RSS 1.1.0 had a bug in its XML parsing that ignored custom content (which in my case I am using for audio enclosures) and also choked on my link constructors for my post and audio file links.&lt;/p&gt;
&lt;p&gt;Today Astro RSS 1.2.0 was released with a fix for this, thanks to a pull request from &lt;a href=&quot;https://github.com/mattstein&quot;&gt;Matt Stein&lt;/a&gt;, so now my RSS layout for &lt;a href=&quot;https://siracusasays.com&quot;&gt;Siracusa Says&lt;/a&gt; looks like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/rss.xml.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/rss&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;sanitize-html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;episodeImportResult&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#6CB6FF&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;globEager&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../content/episodes/*.md&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodeImportResult&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;episodes.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;customData&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;enclosure url=&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;episodes.audioPrefix&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;audiofile&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&quot; length=&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bytes&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&quot; type=&quot;audio/mpeg&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;compiledContent&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;    new Date(b.frontmatter.pubDate).valueOf() -    new Date(a.frontmatter.pubDate).valueOf(),);export const get = () =&gt;  rss({    title: config.get(&amp;#x22;title&amp;#x22;),    description: config.get(&amp;#x22;description&amp;#x22;),    site: config.get(&amp;#x22;url&amp;#x22;),    items: Array.from(episodes).map((episode) =&gt; ({      title: episode.frontmatter.title,      link: &amp;#x60;${new URL(        path.join(config.get(&amp;#x22;episodes.path&amp;#x22;), episode.frontmatter.slug),        config.get(&amp;#x22;url&amp;#x22;),      )}&amp;#x60;,      pubDate: rfc2822(episode.frontmatter.pubDate),      description: episode.frontmatter.description,      customData: &amp;#x60;&lt;enclosure url=&quot;&quot;&gt;&lt;/enclosure&gt;&amp;#x60;,      content: sanitizeHtml(episode.compiledContent()),    })),  });&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I noticed today that on my enclosure links I wasn’t providing the domain in the enclosure link url, just the path. This fixes that and also makes sure that my post links (which are also used by Astro RSS for item entry GUIDs) are always correct. I hadn’t had any problems with them, but this is a safer way of making sure I don’t ever get any extra slashes or other malformed URL issues.&lt;/p&gt;</content:encoded><summary>Astro fixed a bug with Astro RSS that broke custom content.</summary></item><item><title>Astro RSS Compiled Content</title><link>https://scottwillsey.com/astro-rss-compiledcontent</link><guid isPermaLink="true">https://scottwillsey.com/astro-rss-compiledcontent</guid><description>Astro RSS now supports full content RSS feed items.</description><pubDate>Tue, 13 Dec 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been awhile and I have lots of news, but just a short one today: &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; now supports full &lt;a href=&quot;https://docs.astro.build/en/guides/rss/&quot;&gt;RSS feed&lt;/a&gt; content if you use md files for your content. It works like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/pages/rss.xml.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;}${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;episodes.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;}${&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;slug&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;customData&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;enclosure url=&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;episodes.audioPrefix&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;audiofile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&quot; length=&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bytes&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&quot; type=&quot;audio/mpeg&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;compiledContent&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  rss({    title: config.get(&amp;#x22;title&amp;#x22;),    description: config.get(&amp;#x22;description&amp;#x22;),    site: config.get(&amp;#x22;url&amp;#x22;),    items: Array.from(episodes).map((episode) =&gt; ({      title: episode.frontmatter.title,      link: &amp;#x60;${config.get(&amp;#x22;url&amp;#x22;)}${config.get(&amp;#x22;episodes.path&amp;#x22;)}${        episode.frontmatter.slug      }&amp;#x60;,      pubDate: rfc2822(episode.frontmatter.pubDate),      description: episode.frontmatter.description,      customData: &amp;#x60;&lt;enclosure url=&quot;&quot;&gt;&lt;/enclosure&gt;&amp;#x60;,      content: sanitizeHtml(episode.compiledContent()),    })),  });&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;See the last line of code?&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#000000;--2:#F69D50&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sanitizeHtml&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;compiledContent&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;content: sanitizeHtml(episode.compiledContent());&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s directly telling Astro RSS that for a given item, the content is equal to the post’s compiledContent property (and run through &lt;a href=&quot;https://www.npmjs.com/package/sanitize-html&quot;&gt;sanitize-html&lt;/a&gt; for good measure).&lt;/p&gt;
&lt;p&gt;You can find the &lt;a href=&quot;https://docs.astro.build/en/getting-started/&quot;&gt;Astro docs&lt;/a&gt; for it here: &lt;a href=&quot;https://docs.astro.build/en/guides/rss/#including-full-post-content&quot;&gt;Including Full Post Content&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is one caveat I need to mention that directly affects this site. If you use &lt;a href=&quot;https://mdxjs.com&quot;&gt;mdx&lt;/a&gt; instead of md for your posts like I do here, compiledContent() doesn’t work. Since I don’t like my &lt;a href=&quot;https://scottwillsey.com/rss-pt2&quot;&gt;current RSS feed generation tweak&lt;/a&gt; for this site in order to get full content RSS items, my plan is to work on converting back to md and figuring out a way to process images such that I get the benefit of &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;Astro Image&lt;/a&gt;’s Picture and Image components while using standard markdown files.&lt;/p&gt;</content:encoded><summary>Astro RSS now supports full content RSS feed items.</summary></item><item><title>The Mastodon Webfinger Domain Search Super Trick</title><link>https://scottwillsey.com/mastodon-webfinger</link><guid isPermaLink="true">https://scottwillsey.com/mastodon-webfinger</guid><description>You can help people find you on Mastodon by letting them search for your own domain name, regardless of what Mastodon instance you&apos;re on.</description><pubDate>Wed, 23 Nov 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I promised an article about whether or not Mastodon and the Fediverse were going to solve all our problems and make us happy humans with a long species survival probability, but work and other tech projects have intervened. More on that later.&lt;/p&gt;
&lt;p&gt;In the meantime, if you ARE on Mastodon and don’t want to run your own instance but would like people to be able to search for you there using your own domain name instead of the domain name of the instance you’re on, &lt;a href=&quot;https://mastodon.online/@maartenballiauw&quot;&gt;Maarten Balliauw&lt;/a&gt; has a &lt;a href=&quot;https://blog.maartenballiauw.be/post/2022/11/05/mastodon-own-donain-without-hosting-server.html&quot;&gt;really cool trick for this&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In other words, if you want to be discovered on Mastodon using your own domain, you can do so by copying the contents of &lt;code&gt;https://&amp;#x3C;your mastodon server&gt;/.well-known/webfinger?resource=acct:&amp;#x3C;your account&gt;@&amp;#x3C;your mastodon server&gt;&lt;/code&gt; to &lt;code&gt;https://&amp;#x3C;your domain&gt;/.well-known/webfinger&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can read Maarten’s &lt;a href=&quot;https://blog.maartenballiauw.be/post/2022/11/05/mastodon-own-donain-without-hosting-server.html&quot;&gt;post on the webfinger method&lt;/a&gt; on &lt;a href=&quot;https://blog.maartenballiauw.be&quot;&gt;his blog&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>You can help people find you on Mastodon by letting them search for your own domain name, regardless of what Mastodon instance you&apos;re on.</summary></item><item><title>title case</title><link>https://scottwillsey.com/title-case</link><guid isPermaLink="true">https://scottwillsey.com/title-case</guid><description>A good system should never make you remember its implementation details in order to use.</description><pubDate>Thu, 10 Nov 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A good system should never make you remember its implementation details in order to use. That extends to blogging platforms. Since my blogging platform is a self-created, self-hosted website built on &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, the onus of making myself not have to remember how it works just to use it rests solely on me.&lt;/p&gt;
&lt;p&gt;Today I started writing a post about Mastodon and the Fediverse and why it’s not the solution to all your problems that you might think it is, and I realized I couldn’t remember if I write my blog post titles in Title Case or Just the first word capitalized or in camelCase.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; It’s not the first time I’ve had to ask myself this question, and that means it’s a problem I don’t want to think about anymore. So here’s a very simple Title Case generator:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#D40000;--2:#F5776E&quot;&gt;\b&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;A-Za-z&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;toUpperCase&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; x.toUpperCase());}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Running the first paragraph of this blog post through it results in this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#babed8;--1:#000000;--2:#adbac7&quot;&gt;A Good System Should Never Make You Remember Its Implementation Details In Order To Use. That Extends To Blogging Platforms. Since My Blogging Platform Is A Self-Created, Self-Hosted Website Built On Astro, The Onus Of Making Myself Not Have To Remember How It Works Just To Use It Rests Solely On Me.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;A Good System Should Never Make You Remember Its Implementation Details In Order To Use. That Extends To Blogging Platforms. Since My Blogging Platform Is A Self-Created, Self-Hosted Website Built On Astro, The Onus Of Making Myself Not Have To Remember How It Works Just To Use It Rests Solely On Me.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;So now my blog post titles are generated like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;posts.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;titleCase&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;a    href={new URL(      path.join(config.get(&amp;#x22;posts.path&amp;#x22;), content.frontmatter.slug),      config.get(&amp;#x22;url&amp;#x22;),    )}    &gt;{titleCase(content.frontmatter.title)}  &quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Speaking of camelCase, I also took the opportunity to add a camelCase function that outputs what we called camelCase when I was a juvenile programmer-wannabe.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;camelize&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;str&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;toLowerCase&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F;--2:#96D0FF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#6CB6FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#F5776E&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F&quot;&gt;a-zA-Z0-9&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#811F3F;--2:#6CB6FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A05050&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#811F3F&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#0000FF;--2:#F5776E&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;m&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;chr&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;chr&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;toUpperCase&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; chr.toUpperCase());}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I’ll be back next time with some reasons why Mastodon and the Fediverse aren’t suitable for most people in their current incarnations.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;You modern whippersnappers probably think ThisIsCamelCase, but when I was a boy, thisWasCamelCase. So put that in your programming pipe and smoke it. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;Hint: it’s not a technical problem, it’s a people problem. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>A good system should never make you remember its implementation details in order to use.</summary></item><item><title>Friends with Brews</title><link>https://scottwillsey.com/fwbrews</link><guid isPermaLink="true">https://scottwillsey.com/fwbrews</guid><description>Friends with Brews? Yes, it&apos;s the more inclusive incarnation of the Friends with Beer podcast.</description><pubDate>Mon, 31 Oct 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://twitter.com/nikolaidis&quot;&gt;Peter&lt;/a&gt; and I decided a little while ago to convert the Friends with Beers podcast to &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews podcast&lt;/a&gt;. Our reasoning is pretty simple: we don’t always want to drink beer quite as often as we want to talk, and we both like coffee and tea.&lt;/p&gt;
&lt;p&gt;But &lt;a href=&quot;https://twitter.com/CWDaly&quot;&gt;Clay Daly&lt;/a&gt; pointed out another huge benefit: the podcast is more inclusive as Friends with Brews, because some people won’t care about beer, but they might be interested in coffee or tea. And coffee and tea, you may be shocked to learn, are brewed. They qualify as brews. So there will be times on the podcast that we’re both drinking beer, or we’re both drinking coffee, or one of us is drinking beer and tea, or just tea, or just coffee, or… The permutations aren’t endless, but they may as well be for all the effort I’m going to exert in calculating them.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anyway, I &lt;em&gt;think&lt;/em&gt; that the change will be seamless if you subscribed through Apple Podcasts or Overcast. If you subscribed directly to our RSS feed, then please delete it and resubscribe to the &lt;a href=&quot;https://friendswithbrews.com/feed.xml&quot;&gt;Friends with Brews RSS feed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By the way, the &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;Friends with Brews website&lt;/a&gt; is an upgrade. It features a fully indexed search capability, accessible both from the &lt;a href=&quot;https://friendswithbrews.com&quot;&gt;home page&lt;/a&gt; and from the &lt;a href=&quot;https://friendswithbrews.com/brews/1/&quot;&gt;brews page&lt;/a&gt;, which will return matches for the site in general and for the different drinks more specifically. I think it also looks a lot nicer than the previous incarnation of the site, but I am biased since I’m the one who built it.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Hint: zero effort &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Friends with Brews? Yes, it&apos;s the more inclusive incarnation of the Friends with Beer podcast.</summary></item><item><title>Friends with Beer 2.0</title><link>https://scottwillsey.com/fwb2</link><guid isPermaLink="true">https://scottwillsey.com/fwb2</guid><description>Friends with Beer podcast has a new site, and it shouldn&apos;t surprise you that it&apos;s written with Astro.</description><pubDate>Fri, 28 Oct 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I think I mentioned in my &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-1/&quot;&gt;Responsive&lt;/a&gt; &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-2/&quot;&gt;Image&lt;/a&gt; &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-3/&quot;&gt;Rabbit&lt;/a&gt; Hole Series that I have been building an Astro version of the &lt;a href=&quot;https://friendswithbeer.com&quot;&gt;Friends with Beer website&lt;/a&gt;, and it’s finally live!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://friendswithbeer.com&quot;&gt;Friends with Beer&lt;/a&gt; now features a nicer look, redesigned beer detail pages, and a fully indexed search capability that returns results for episodes AND for beer! That means you can search for a beer we talked about in an episode and find it immediately. The search UI shows up on the &lt;a href=&quot;https://friendswithbeer.com&quot;&gt;home page&lt;/a&gt; and on the &lt;a href=&quot;https://friendswithbeer.com/beer/1/&quot;&gt;beer cooler page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I still need to tweak the custom 404 by updating it for the new build, so it is basically an un-styled page at this point.&lt;/p&gt;
&lt;p&gt;Having finished this, my work isn’t even done yet, because now I need to tweak the site to meet our new goal of being Friends with Brews! That’s right, we want the flexibility to drink not just beer, but coffee and tea instead. Those are brewed, beer is brewed, and it means less beer drinking for times a beer really doesn’t sound right.&lt;/p&gt;
&lt;p&gt;More on that soon, hopefully…&lt;/p&gt;</content:encoded><summary>Friends with Beer podcast has a new site, and it shouldn&apos;t surprise you that it&apos;s written with Astro.</summary></item><item><title>Picture Element Sizes Attribute</title><link>https://scottwillsey.com/picture-sizes</link><guid isPermaLink="true">https://scottwillsey.com/picture-sizes</guid><description>A deeper look at controlling image display sizes with the picture element&apos;s sizes attribute.</description><pubDate>Mon, 17 Oct 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple days ago, I posted some &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-3&quot;&gt;responsive image and Astro Image science experiments&lt;/a&gt;. If you read that post, you’ll notice that my examples all assume I want to display my image at 200px wide. The reason is I was performing the experiments on a very specific layout that I use to show what beer we enjoyed on a given episode of &lt;a href=&quot;https://friendswithbeer.com&quot;&gt;Friends with Beer&lt;/a&gt;.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;But the sizes attribute of the HTML picture element is a lot more versatile than that. You can get very granular in how you control your image display sizes. I’ll show how to do it using the &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;Astro Image component&lt;/a&gt;, specifically its Picture component.&lt;/p&gt;
&lt;p&gt;When I wrote the my &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-3&quot;&gt;science experiments post&lt;/a&gt;, I had all the images in the article set to display at 400 or 500px width, depending on the image. I debated about the size of some of them being too small to see the details very well, but the images link to the large original, and some of them are quite a bit taller than they are wide and I didn’t want to make a page full of posters.&lt;/p&gt;
&lt;p&gt;But more troublingly, setting them with a simple &lt;code&gt;sizes=&quot;500px&quot;&lt;/code&gt; value made them look bad on mobile devices. For example, here’s my first image in the article shown in the iPhone 12 Pro screen size, and it just shoots out both sides like there’s no guard rails and no cliffs next to the road.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/image1-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.jpg&quot;&gt;&lt;img alt=&quot;500px wide image on iPhone 12 Pro screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;954&quot; height=&quot;814&quot; src=&quot;https://scottwillsey.com/_astro/image1-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.ChoSke7B_Zef0RE.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s a little confusing, because it’s an image of me examining images on a web page in Chrome developer tools, but you can see that it’s indeed displaying at my requested 500px width and is too wide for the page on the iPhone as a result.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/image2-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.jpg&quot;&gt;&lt;img alt=&quot;500px wide image details in Chrome developer tools&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1034&quot; height=&quot;878&quot; src=&quot;https://scottwillsey.com/_astro/image2-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.CWCvUXNs_Z4d31L.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fortunately, sizes has an answer for us: we can specify it to be 500px above a certain screen width, and then just show at 90% of the viewport width below that screen width.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1500&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 550px) 90vw, 500px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;600px wide image displayed at 200px width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It’s a little unclear how to read that initially. Here’s what it means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For screens up to 550px wide, display the image at 90vw (90% viewport width).&lt;/li&gt;
&lt;li&gt;For screens that don’t meet the specified condition (ie., they are wider than 550px), display the image at 500px wide.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It works great. Now for wide screens, I get a 500px wide image, and for smaller screens, I get an image better tailored to the display.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/image3-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.jpg&quot;&gt;&lt;img alt=&quot;Image displaying at 500px wide on bigger screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1784&quot; height=&quot;958&quot; src=&quot;https://scottwillsey.com/_astro/image3-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.CqSXPkTr_1Amg14.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/image4-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.jpg&quot;&gt;&lt;img alt=&quot;Image displaying at 90vw width on small screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1050&quot; height=&quot;820&quot; src=&quot;https://scottwillsey.com/_astro/image4-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.C35haHJP_ZFN7oA.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can get even more granular. For example, I determined that an image I displayed in a different post at 600px wide on big displays worked better if it was only 80% of the viewport width between 650 and 750px screen widths, and 90% of the viewport width below that.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beerlatest&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1800&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 650px) 90vw, (max-width: 750px) 80vw, 600px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Latest episode beer list view&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You may be thinking “Wow, that’s cool!” and also thinking “Wow, I can’t believe you’re going to type all that out every time you want to include a 600 pixel wide image in an article!”.&lt;/p&gt;
&lt;p&gt;Yeah. I’m not.&lt;/p&gt;
&lt;p&gt;There are a couple different ways to fix that. Both involve me using markdown syntax for my images but adding a display width to it, like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;images/image3-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.png width=&quot;500&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0td:underline;--1:#000000;--1td:underline;--2:#ADBAC7;--2td:underline&quot;&gt;images/image3-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;![images/image3-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.png width=&amp;#x22;500&amp;#x22;](images/image3-1C3FC4F9-AB6B-44DA-B33A-377336BD42B9.png)&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I’ll also throw in an alt tag value for good measure, of course.&lt;/p&gt;
&lt;p&gt;Using that, I have a couple options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I can write a script to run in &lt;a href=&quot;https://getdrafts.com&quot;&gt;Drafts&lt;/a&gt;, my markdown editor of choice which has excellent scripting support, that converts all my markdown images to &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;Astro Image&lt;/a&gt;’s Picture component format with widths and sizes attributes nicely calculated and filled in automatically for me,&lt;/li&gt;
&lt;li&gt;See if using some kind of rehype plugin in Astro at site build time would be a better way to do it so I don’t even have to actually click a script button in Drafts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Either way, I absolutely do NOT plan on having to remember the science experiments I did to come up with my sizes attribute values for different image widths. That just goes against the whole point of trying to keep the writing process separate from the need to know about mundane site details, and for me it’s a step backwards.&lt;/p&gt;
&lt;p&gt;The end result, regardless of which way I decide to go about it, is that I just have to know markdown image syntax (I do), and how wide I want it to display in the blog post and what I want the alt tag to be. I’ll let a script located somewhere figure out the implementation details for me.&lt;/p&gt;
&lt;p&gt;Make computers work for you, not the other way around!&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Depending on when you read this, the Friends with Beer website may still be on Eleventy. The Astro version is WIP. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>A deeper look at controlling image display sizes with the picture element&apos;s sizes attribute.</summary></item><item><title>Reponsive Image Rabbit Hole – Part 3</title><link>https://scottwillsey.com/image-rabbit-hole-3</link><guid isPermaLink="true">https://scottwillsey.com/image-rabbit-hole-3</guid><description>Some science experiments with Astro Image to show how it and responsive images in general work.</description><pubDate>Sat, 15 Oct 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been a few days since I’ve written anything, and I’m going to make my tardiness up to you with some detailed science experiments. You can find &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-1/&quot;&gt;part 1&lt;/a&gt; and &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-2/&quot;&gt;part 2&lt;/a&gt; of this series &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-1/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-2/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This article will be helpful for understanding responsive images in general, but also the &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;@astrojs/image&lt;/a&gt; &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; component for generating responsive images in particular.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; I’m not the fastest learner and it generally requires me to poke around at things awhile before I understand how they work, so browser developer tools are a must in my process.&lt;/p&gt;
&lt;p&gt;First off, I owe &lt;a href=&quot;https://twitter.com/tonysull_co?s=21&amp;#x26;t=Ibi4YXw9kwwLY5ExPYmJ-Q&quot;&gt;Tony Sull&lt;/a&gt;, author of Astro Image, a public apology. In the midst of converting some sites of mine from &lt;a href=&quot;https://www.11ty.dev&quot;&gt;Eleventy&lt;/a&gt; to &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, I found my images on my astro sites to look really low resolution compared to what I was getting in Eleventy with the &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;eleventy-image&lt;/a&gt; plugin. Failing to understand how responsive images work (but thinking I did) and failing to perform the right tests and sanity checks made me think I was writing equivalent code and getting different results. I even went so far as to complain about the image quality from Astro Image in the &lt;a href=&quot;https://astro.build/chat&quot;&gt;Astro Discord&lt;/a&gt; a couple of times.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But I was wrong.&lt;/strong&gt; Astro Image works just fine. It’s me, myself, and I that wasn’t working just fine.&lt;/p&gt;
&lt;p&gt;When using Astro Image to generate responsive images, two factors have to be taken into consideration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The differences between Astro Image’s Picture component and Image component,&lt;/li&gt;
&lt;li&gt;How browsers choose responsive image sources for the user’s screen resolution/pixel-ratio and viewport size.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;astro-images-picture-component&quot;&gt;Astro Image’s Picture component&lt;/h2&gt;
&lt;p&gt;I showed in &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-2/&quot;&gt;Part 2 of the Responsive Image Rabbit Hole&lt;/a&gt; how the Picture component can be used to generate multiple sources with their own srcsets for any given image, and what the resulting HTML would look like. I showed how the Image component would generate one width of image based on your input at whatever quality and format you specified. In contrast to Picture, you get one image width and one image format.&lt;/p&gt;
&lt;p&gt;I also talked about needing to take screen resolution and pixel-ratio into account in order to generate images large enough to look good on high resolution displays when displayed at the desired width.&lt;/p&gt;
&lt;p&gt;The result is that making images of high enough resolution on a high pixel-ratio screen with the Picture component is easy.&lt;/p&gt;
&lt;p&gt;For example, here I want 600, 900, 1200, and 1500 pixel-wide versions of the image in avif, webp, and png, and I plan to display it at 200px wide.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/beer/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;900&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1500&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aspectRatio&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1:1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;200px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Checking the result with Chrome developer tools, the image is displayed at 200px wide and the image downloaded is the 600px wide version.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/NormalView-200px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;600px wide image displayed at 200px width&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1318&quot; height=&quot;1126&quot; src=&quot;https://scottwillsey.com/_astro/NormalView-200px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.CmvOdVfR_Z1Ento0.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let’s additionally generate 200 and 400px wide images to see which one gets downloaded to display at my desired 200px width.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/beer/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;900&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1500&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aspectRatio&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1:1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;200px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The answer is that the 400px image gets downloaded to display at 200px wide. Why? Simple… My iMac has a screen with a pixel-ratio of 2. It wants a 2x image for any given display width.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/200px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;400px wide image displayed at 200px width&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1640&quot; height=&quot;1700&quot; src=&quot;https://scottwillsey.com/_astro/200px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.R6e7Qs-5_Z24Y7O2.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now let’s use Chrome’s responsive device mode and look at what happens on an iPhone 12 Pro screen with the exact same Picture component parameters as above, still generating image widths at 200, 400, 600, 900, 1200, and 1500px wide.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/200px-600px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;600px wide image displayed at 200px width&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1160&quot; height=&quot;1650&quot; src=&quot;https://scottwillsey.com/_astro/200px-600px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.Bz4C6skS_Z1UIPVy.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now we get the 600px wide image in order to display it nicely, because the iPhone 12 Pro has a screen pixel-ratio of 3.&lt;/p&gt;
&lt;p&gt;You can use the console in your browser developer tools to show you the pixel-ratio for your computer’s screen as well as any simulated devices in responsive mode. Below are the pixel-ratios for my 27” 5K iMac screen and the screen of the iPhone 12 Pro that I used for the above tests.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/DevicePixelRatioMac-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;Mac window device pixel ratio&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;550&quot; height=&quot;284&quot; src=&quot;https://scottwillsey.com/_astro/DevicePixelRatioMac-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.ebyJrne4_Z1QtNcQ.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/DevicePixelRatioiPhone-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;iPhone 12 Pro window device pixel ratio&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;694&quot; height=&quot;334&quot; src=&quot;https://scottwillsey.com/_astro/DevicePixelRatioiPhone-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.BfBfl2DH_Awd2f.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Mac has a device pixel ratio of 2, so it needs and receives the 400px wide image to display at 200px, and the iPhone has a device pixel ratio of 3, so it wants and receives a 600px wide image to display nicely at 200px. If you have a picture element in your page and you are getting a larger image than you expect given what you set for the image size in the Picture sizes attribute, check your display window pixel ratio. Chances are it’s higher than 1.&lt;/p&gt;
&lt;h2 id=&quot;astro-images-image-component&quot;&gt;Astro Image’s Image component&lt;/h2&gt;
&lt;p&gt;The Astro Image Picture component lets us easily overcome this, but it’s not so clear how to do so with the Image component. Image component accepts one width in its width attribute, and it has no concept of sizes. Setting the width (and height and aspect ratio if needed or desired) determines the size of image generated.&lt;/p&gt;
&lt;p&gt;This means either one of two things: You’re going to get a fuzzy image on high resolution displays if you set width to the actual display width you want, or you’re going to set it higher than your desired display width and you’re just going to get an image displayed wider than desired and that is still fuzzy.&lt;/p&gt;
&lt;p&gt;For example, let’s throw an Image component in the mix. Let’s give it a width of 200px because that’s what size we want our image to be. Let’s look at it next to the unchanged Picture component with the settings we last used above.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;images/beer/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aspectRatio&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1:1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/beer/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;900&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aspectRatio&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1:1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;200px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&lt;Picture  src={&amp;#x60;/images/beer/${beer.image}.png&amp;#x60;}  widths={[400, 600, 900, 1200]}  aspectRatio=&amp;#x22;1:1&amp;#x22;  sizes=&amp;#x22;200px&amp;#x22;  formats={[&amp;#x22;avif&amp;#x22;, &amp;#x22;webp&amp;#x22;, &amp;#x22;png&amp;#x22;]}  alt={&amp;#x60;${beer.brewery} ${beer.name}&amp;#x60;}/&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;All these images are being displayed at 200 x 200px, as desired. But only the ones from the Picture component are nice and sharp, because it’s using 400px wide images for those. The Image component is generating a single 200px wide image and using that, and it’s noticeably blurrier than the 400px wide 2x image.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Image-200px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;Image and Picture components with 200px width&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1738&quot; height=&quot;1258&quot; src=&quot;https://scottwillsey.com/_astro/Image-200px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.Px45q2my_4C5WC.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ok, fine, you say. Give image a width of 400 and call it done. That is in fact the correct answer (assuming your site never gets displayed on a screen with a higher pixel ratio than 2), but guess what? You’re also telling it to generate an img tag with a width attribute set to 400. I’m sure it’s not going to surprise you to see what happens next:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Image-400px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;Image component with 400px width&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1794&quot; height=&quot;1672&quot; src=&quot;https://scottwillsey.com/_astro/Image-400px-400px-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.CaJrnnw9_Z28sqvO.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To add insult to injury, not only is it displayed at twice the size you actually want, it’s still fuzzy by comparison because it’s not acting as a 2x image. It’s just a bigger 1x image on a screen with a pixel ratio of 2. Wah, wah.&lt;/p&gt;
&lt;p&gt;Astro Image’s Image component doesn’t generate srcsets like the Picture component does, even though we saw in &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-1/&quot;&gt;Part 1 of this Response Image Rabbit Hole&lt;/a&gt; that the HTML img tag does support srcsets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you use the Astro Image component, you will need to generate an image large enough to look good on screens with pixel ratios of 2 and 3, and then use CSS to control the display size.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In order to conduct these experiments for you, I got rid of any CSS related to image size. I’m going to put img class height and width properties back in, like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#800000;--2:#6CB6FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;beer-image&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#0451A5;--2:#6CB6FF&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#6CB6FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#D30000;--2:#F69D50&quot;&gt;--menu-surface&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;aspect-ratio&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#B2CCD6;--1:#D30000;--2:#6CB6FF&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;-0.6&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#F5776E&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;.beer-image img {  height: 200px;  width: 200px;  border: 3px solid var(--menu-surface);  border-radius: 10%;  aspect-ratio: 1;  margin-bottom: -0.6rem;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The result is the image from both the Image component and the Picture component are displayed at 200 x 200px, and both use 400 x 400px images as source files. Both now look equally sharp on my Retina display.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/Image-all-400-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.jpg&quot;&gt;&lt;img alt=&quot;Image component with 400px width using CSS to set the display size&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1824&quot; height=&quot;1292&quot; src=&quot;https://scottwillsey.com/_astro/Image-all-400-2FA1BD80-9E3E-406B-B3AF-3E8796E7DEE8.DB5t0eAn_1kB0JI.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;lesson-learned&quot;&gt;Lesson learned&lt;/h2&gt;
&lt;p&gt;The lesson I learned is very simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the Astro Image Picture component and make sure to use sizes to control the display size and use widths to generate sizes that will look good on high density displays, OR&lt;/li&gt;
&lt;li&gt;Use the Image component, set the width that will look good on screens that want 2x and 3x images, and control the display size with CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;For simplicity, I’ll reference it as Astro Image. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>Some science experiments with Astro Image to show how it and responsive images in general work.</summary></item><item><title>Reponsive Image Rabbit Hole – Part 2</title><link>https://scottwillsey.com/image-rabbit-hole-2</link><guid isPermaLink="true">https://scottwillsey.com/image-rabbit-hole-2</guid><description>Using automation, specifically Astro Image, to give the browser image options.</description><pubDate>Fri, 30 Sep 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-1/&quot;&gt;In installment 1 of this responsive image topic&lt;/a&gt;, I talked about how the modern approach to giving site visitors the best combination of image file size and image quality comes down to generating a bunch of versions of the image and letting the browser choose. Further, the browser chooses by being given a choice of sources and/or srcset elements using the HTML &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture&quot;&gt;picture&lt;/a&gt; or &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img&quot;&gt;img&lt;/a&gt;. So the two step process for making image optimization possible for site visitors is: 1) Make a bunch of image files for each image you will display, 2) Create the HTML that allows the browser to know about and choose from the available options.&lt;/p&gt;
&lt;p&gt;This sounds like a lot of work to do whenever you want to drop an image in a blog post. Who wants to do all this every time? The correct answer is no one. Anyone who does this manually for every image they want to inflict on their visitors doesn’t understand that the computer is there to work for them instead of the other way around. Fortunately, all modern web frameworks understand this and have solutions in place to tackle image optimization.&lt;/p&gt;
&lt;h2 id=&quot;astro-image-plugin&quot;&gt;Astro Image plugin&lt;/h2&gt;
&lt;p&gt;In the case of &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, the official answer to this is the &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;@astrojs/image plugin&lt;/a&gt;. For simplicity I’ll just call it Astro Image from now on. To understand what image optimization plugins do, the Astro Image documentation says this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Images play a big role in overall site performance and usability. Serving properly sized images makes all the difference but is often tricky to automate.&lt;/p&gt;
&lt;p&gt;This integration provides &lt;code&gt;&amp;#x3C;Image /&gt;&lt;/code&gt; and &lt;code&gt;&amp;#x3C;Picture&gt;&lt;/code&gt; components as well as a basic image transformer, with full support for static sites and server-side rendering. The built-in image transformer is also replaceable, opening the door for future integrations that work with your favorite hosted image service.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are a couple key points here. One is providing Image and Picture Astro components. That means you can generate all the html you need with a component like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Picture&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beerlatest&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;widths&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;1800&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 800px) 95vw, 90vw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;formats&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Latest episode beer list view&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The resulting HTML will be the fully conceived HTML picture element with all the sources and srcsets you need. I added judicious use of carriage returns and tabs to make each of the elements more readable.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;source&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1mD09L.webp   800w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z1gGQwg.webp 1200w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z22UqRY.webp 1800w&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 800px) 95vw, 90vw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;source&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_wgsuf.png    800w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z2b2h6I.png 1200w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1yzNhO.png  1800w&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 800px) 95vw, 90vw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z8LQlw.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;loading&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;lazy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;decoding&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Latest episode beer list view&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;source    type=&amp;#x22;image/webp&amp;#x22;    srcset=&amp;#x22;      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1mD09L.webp   800w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z1gGQwg.webp 1200w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z22UqRY.webp 1800w    &amp;#x22;    class=&amp;#x22;astro-EI35XRNH&amp;#x22;    sizes=&amp;#x22;(max-width: 800px) 95vw, 90vw&amp;#x22;  /&gt;  &lt;source    type=&amp;#x22;image/png&amp;#x22;    srcset=&amp;#x22;      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_wgsuf.png    800w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z2b2h6I.png 1200w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1yzNhO.png  1800w    &amp;#x22;    class=&amp;#x22;astro-EI35XRNH&amp;#x22;    sizes=&amp;#x22;(max-width: 800px) 95vw, 90vw&amp;#x22;  /&gt;  &lt;img    src=&amp;#x22;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z8LQlw.png&amp;#x22;    class=&amp;#x22;astro-EI35XRNH&amp;#x22;    loading=&amp;#x22;lazy&amp;#x22;    decoding=&amp;#x22;async&amp;#x22;    alt=&amp;#x22;Latest episode beer list view&amp;#x22;  /&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You may notice the different file names for each image resolution in the srcset for each of the two sources. If you guessed that the second part of what Astro Image does is generate the different image files for the browser to choose from, you win a virtual round of applause. For each of the widths you specify in the widths attribute of the Astro Image Picture component, Astro Image will generate an image of that width for that source’s file type. For local images, all heights will be calculated to keep the original aspect ratio, while for remote images, an aspect ratio must be provided for Picture to know what height to use.&lt;/p&gt;
&lt;p&gt;Astro Image also has an Image component which you can use to create resized images in whatever format you desire. However, there are some limitations to the Image component in Astro Image. You can only generate one size (it does not make use of the HTML img srcset attribute) and one format. This means you need to remember my warning about high resolution screens at the bottom of &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-1/&quot;&gt;part 1&lt;/a&gt;. This means if you use the Image component, you are going to certainly want to specify a width of 2-3x the pixel width you plan to display the image at.&lt;/p&gt;
&lt;p&gt;I use this for my &lt;a href=&quot;https://scottwillsey.com/about/&quot;&gt;About page&lt;/a&gt; selfie image. Below is the Astro component code followed by the resultant HTML.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;about-av&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;av&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott Willsey&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;quality&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;85&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;about-av astro-AT6AUSG4 astro-UXNKDZ4E&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott Willsey&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/assets/ScottLatest.cbf6b2e6_1ymKwq.webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;loading&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;lazy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;decoding&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&lt;img  class=&amp;#x22;about-av astro-AT6AUSG4 astro-UXNKDZ4E&amp;#x22;  alt=&amp;#x22;Scott Willsey&amp;#x22;  width=&amp;#x22;600&amp;#x22;  height=&amp;#x22;600&amp;#x22;  src=&amp;#x22;/assets/ScottLatest.cbf6b2e6_1ymKwq.webp&amp;#x22;  loading=&amp;#x22;lazy&amp;#x22;  decoding=&amp;#x22;async&amp;#x22;/&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I actually display the image at 300x300 (which I control in css) and it looks ok on high resolution screens because the image is 600x600.&lt;/p&gt;
&lt;h2 id=&quot;the-retina-wrinkle-again&quot;&gt;The Retina wrinkle (again)&lt;/h2&gt;
&lt;p&gt;Remember last time when I said retina or high resolution displays throw a monkey in the wrench of displaying images? I fooled myself for a long time into thinking Astro Image wasn’t working correctly because I kept forgetting about it, even though I know very well about retina displays and their need for higher resolution images.&lt;/p&gt;
&lt;p&gt;But now, because apparently I can’t quit using words, I’ll have to save that for part 3. I want to explain what I did on my Eleventy sites and what I was doing with my Astro sites, and how converting Friends with Beer from one to the other helped me understand my incredible ignorance about how all this works in the first place.&lt;/p&gt;
&lt;p&gt;Stay tuned.&lt;/p&gt;</content:encoded><summary>Using automation, specifically Astro Image, to give the browser image options.</summary></item><item><title>Reponsive Image Rabbit Hole – Part 1</title><link>https://scottwillsey.com/image-rabbit-hole-1</link><guid isPermaLink="true">https://scottwillsey.com/image-rabbit-hole-1</guid><description>I learned about responsive images the hard way, by misunderstanding how they worked.</description><pubDate>Wed, 28 Sep 2022 13:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;contents&quot;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#why-image-optimization&quot;&gt;Why image optimization?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#how-image-optimization&quot;&gt;How image optimization?&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#html-img-element&quot;&gt;HTML img element&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#html-picture-element&quot;&gt;HTML picture element&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#the-retina-wrinkle&quot;&gt;The Retina wrinkle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;why-image-optimization&quot;&gt;Why image optimization?&lt;/h2&gt;
&lt;p&gt;Image optimization and how browsers can handle various methods of optimization is a pretty interesting topic. The basic idea is to give the browser options for any given image so that it can display them as intended by the site or article author, but with as little data transfer and image loading time as possible.&lt;/p&gt;
&lt;p&gt;Browser variables that can affect image rendering efficiency are things like platform (mobile vs desktop-class browser), internet connection bandwidth, viewport size, screen resolution, and which image formats the browser supports. &lt;a href=&quot;https://twitter.com/BHolmesDev&quot;&gt;Ben Holmes&lt;/a&gt; wrote a great article on the topic of &lt;a href=&quot;https://bholmes.dev/blog/picture-perfect-image-optimization/&quot;&gt;perfect image optimization&lt;/a&gt; that you should read which talks about some of these variables.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;how-image-optimization&quot;&gt;How image optimization?&lt;/h2&gt;
&lt;p&gt;Ok, that’s not really proper English, but you get the point. Now we know we need to try not to send bigger images to the browser than necessary, but we still want them to look good. How do we do this?&lt;/p&gt;
&lt;p&gt;The answer is: &lt;em&gt;make multiple sizes and formats of each image and let the browser figure it out.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Modern browsers allow you to specify source sets for images. Given these image source sets, the browser can make a choice on which one it wants to request to perform the role of the image specified in the img tag.&lt;/p&gt;
&lt;p&gt;Image source sets can be specified using either the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture&quot;&gt;HTML picture element&lt;/a&gt; or directly in the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images&quot;&gt;HTML img element&lt;/a&gt; itself.&lt;/p&gt;
&lt;h3 id=&quot;html-img-element&quot;&gt;HTML img element&lt;/h3&gt;
&lt;p&gt;With an HTML img, you can specify a srcset like this (&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images&quot;&gt;example from MDN&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;elva-fairy-480w.jpg 480w, elva-fairy-800w.jpg 800w&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 600px) 480px,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;800px&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;elva-fairy-800w.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Elva dressed as a fairy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;/button&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;In the above example, there are two jpg versions of the same image available, one 480px wide and the other 800px wide. The browser will download the image size that makes sense for it given the viewport size and screen resolution. The value of the sizes attribute specifies that if the viewport is 600px or less, you’ll get a 480px wide image, otherwise you’ll get an 800px wide one.&lt;/p&gt;
&lt;h3 id=&quot;html-picture-element&quot;&gt;HTML picture element&lt;/h3&gt;
&lt;p&gt;The Picture element is a little more involved but also more versatile (&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture&quot;&gt;again from MDN&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;photo.avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/avif&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;photo.webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;photo.jpg&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;photo&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;source srcset=&quot;&quot;&gt;  &lt;source srcset=&quot;&quot;&gt;  &lt;img src=&quot;&quot;&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;As you can see, instead of just one srcset, you can have multiple sources (one source for each image format option available), each with their own srcsets. These srcsets can in turn contain multiple image sizes. Here’s an example of this from my last post on this site:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;source&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_ZFUDaL.webp   300w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z2uWKfV.webp  600w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1mD09L.webp   800w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z1gGQwg.webp 1200w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z22UqRY.webp 1800w&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 800px) 95vw, 90vw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;source&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;image/png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;srcset&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z1MMor.png   300w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_13Es8j.png   600w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_wgsuf.png    800w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z2b2h6I.png 1200w,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#0000FF;--2:#96D0FF&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1yzNhO.png  1800w&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;sizes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;(max-width: 800px) 95vw, 90vw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z8LQlw.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-EI35XRNH&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;loading&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;lazy&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;decoding&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#0000FF;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Latest episode beer list view&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;source    type=&amp;#x22;image/webp&amp;#x22;    srcset=&amp;#x22;      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_ZFUDaL.webp   300w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z2uWKfV.webp  600w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1mD09L.webp   800w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z1gGQwg.webp 1200w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z22UqRY.webp 1800w    &amp;#x22;    class=&amp;#x22;astro-EI35XRNH&amp;#x22;    sizes=&amp;#x22;(max-width: 800px) 95vw, 90vw&amp;#x22;  /&gt;  &lt;source    type=&amp;#x22;image/png&amp;#x22;    srcset=&amp;#x22;      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z1MMor.png   300w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_13Es8j.png   600w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_wgsuf.png    800w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z2b2h6I.png 1200w,      /assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_1yzNhO.png  1800w    &amp;#x22;    class=&amp;#x22;astro-EI35XRNH&amp;#x22;    sizes=&amp;#x22;(max-width: 800px) 95vw, 90vw&amp;#x22;  /&gt;  &lt;img    src=&amp;#x22;/assets/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.d9a54970_Z8LQlw.png&amp;#x22;    class=&amp;#x22;astro-EI35XRNH&amp;#x22;    loading=&amp;#x22;lazy&amp;#x22;    decoding=&amp;#x22;async&amp;#x22;    alt=&amp;#x22;Latest episode beer list view&amp;#x22;  /&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is an admittedly extreme example of generating 10 different images (5 sizes of webp, 5 sizes of png) just for one actual image on the website. I probably shouldn’t do this many resolutions in practice, and in fact I probably gain no benefit from doing this many. I probably only need 2 or 3 of those. But it does give you a good idea of the fact that each source in a picture element is a specific format of image, and inside that source, the srcset contains the different image sizes available for that format option.&lt;/p&gt;
&lt;p&gt;The Sizes attribute works as it does with img, in this case specifying that up to 800px browser width, the image should be sized to take up 95% of the viewport width, and above 800px wide, only 90% of the viewport width. The context here is that my whole website content section is set to a maximum of 70ch or something like that, so even if you have your browser in fullscreen mode on a 5k iMac, the image will only be 90% of 70ch wide anyway.&lt;/p&gt;
&lt;h2 id=&quot;the-retina-wrinkle&quot;&gt;The Retina wrinkle&lt;/h2&gt;
&lt;p&gt;Speaking of 5k iMac displays, there’s a wrinkle in this whole image optimization scheme: high-resolution displays (known as &lt;a href=&quot;https://en.wikipedia.org/wiki/Retina_display&quot;&gt;Retina displays&lt;/a&gt; in the Apple world). Basically for a given resolution, the screen uses double or triple the pixel density in order to display things sharp enough that the individual pixels can’t been seen by the human eye. What this means in terms of images on websites is that if you want to display a nice looking 800px wide image on a Retina display, you actually need a much higher resolution version of the image.&lt;/p&gt;
&lt;p&gt;The image resolution issue was something I tripped over when fighting my image optimization strategy for both this site and the work-in-progress Astro version of Friends with Beer. I knew this fact but didn’t take it into account when I was looking at which size image was downloading for a given image. I thought the &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;Astro Image component&lt;/a&gt; I was using was downloading a larger image than it should be given the size I wanted to display, but in fact the only thing that was broken was my understanding of how responsive images work.&lt;/p&gt;
&lt;p&gt;I’ll tell that story in &lt;a href=&quot;https://scottwillsey.com/image-rabbit-hole-2/&quot;&gt;Part 2&lt;/a&gt;. In the meantime, here are some excellent links on image optimization.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/a-guide-to-the-responsive-images-syntax-in-html/&quot;&gt;A guide to the responsive images syntax in HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jakearchibald.com/2021/serving-sharp-images-to-high-density-screens/&quot;&gt;Halve the size of images by optimising for high density displays&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types&quot;&gt;Image file type and format guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.aleksandrhovhannisyan.com/blog/eleventy-image-plugin/&quot;&gt;Optimizing images with the 11ty image plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bholmes.dev/blog/picture-perfect-image-optimization/&quot;&gt;Picture perfect image optimization for any framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images&quot;&gt;Responsive images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Media/images&quot;&gt;Using images in HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Ben now works for &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, the framework that I use for this website and highly endorse. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>I learned about responsive images the hard way, by misunderstanding how they worked.</summary></item><item><title>Map Your Stuff</title><link>https://scottwillsey.com/map-stuff</link><guid isPermaLink="true">https://scottwillsey.com/map-stuff</guid><description>JavaScript array maps are a common pattern in Astro, and very useful ones at that.</description><pubDate>Mon, 26 Sep 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the patterns you’ll see frequently in &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; is using the JavaScript &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map&quot;&gt;array map function&lt;/a&gt;. Array.map() creates a new array that holds the results of performing whatever function you provide on each element of the original array.&lt;/p&gt;
&lt;p&gt;Ok, that’s clear as mud.&lt;/p&gt;
&lt;p&gt;But let’s say you have a podcast. Let’s say this podcast is called &lt;a href=&quot;https://friendswithbeer.com&quot;&gt;Friends with Beer&lt;/a&gt;, and let’s say you have a json file full of information about the beer you drink on your podcast. Let’s say it looks like this, repeated n number of times where n is the number of beers you’ve had on the podcast.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;beer.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;OShp7ovkwb6F14mpRqFbw&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Hell or High Watermelon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;21st Amendment Brewery&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;21stAmendmentBreweryHellOrHighWatermelon-EA669A2C-D404-422C-8495-AA268674CAA5&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;sortOrder&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;14&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;https://www.21st-amendment.com/beers/hell-or-high-watermelon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA&quot;&gt;rating&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;host&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Scott&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;vote&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;thumbs-up&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--1:#0451A5;--2:#8DDB8C&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;I wish it had more watermelon flavor, but it is a nice light wheat beer that&apos;s very pleasant.&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#C32F2F;--2:#FF938A;--2fs:italic&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;[  {    &amp;#x22;id&amp;#x22;: &amp;#x22;OShp7ovkwb6F14mpRqFbw&amp;#x22;,    &amp;#x22;name&amp;#x22;: &amp;#x22;Hell or High Watermelon&amp;#x22;,    &amp;#x22;brewery&amp;#x22;: &amp;#x22;21st Amendment Brewery&amp;#x22;,    &amp;#x22;image&amp;#x22;: &amp;#x22;21stAmendmentBreweryHellOrHighWatermelon-EA669A2C-D404-422C-8495-AA268674CAA5&amp;#x22;,    &amp;#x22;sortOrder&amp;#x22;: &amp;#x22;0&amp;#x22;,    &amp;#x22;episodes&amp;#x22;: [&amp;#x22;14&amp;#x22;],    &amp;#x22;url&amp;#x22;: &amp;#x22;https://www.21st-amendment.com/beers/hell-or-high-watermelon&amp;#x22;,    &amp;#x22;rating&amp;#x22;: [      {        &amp;#x22;host&amp;#x22;: &amp;#x22;Scott&amp;#x22;,        &amp;#x22;vote&amp;#x22;: &amp;#x22;thumbs-up&amp;#x22;,        &amp;#x22;description&amp;#x22;: &amp;#x22;I wish it had more watermelon flavor, but it is a nice light wheat beer that&amp;#x27;s very pleasant.&amp;#x22;      }    ]  },...]&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Presumably you’d like to show the latest episode on your site’s home page with a little view featuring the beer that was consumed on that episode, like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scottwillsey.com/images/posts/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.jpg&quot;&gt;&lt;img alt=&quot;Latest episode beer list view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1820&quot; height=&quot;1034&quot; src=&quot;https://scottwillsey.com/_astro/BeerList-FCBA21C9-2F71-4051-B283-51452F68625D.DCaL-gEk_1X1r3J.webp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First thing you need to do is grab the json file and find all beer associated with whatever episode is the latest. I have a file named beerlist.mjs that exports a beerList function this because I want to be able to get a beer list in other places on the site too.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;beerList.mjs&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../../data/beer.json&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;beerList&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beers&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;ep&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#F78C6C;--1:#08774E;--2:#6CB6FF&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beers&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;includes&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;)))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; beer.episodes.includes(String(episode)));}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I can optionally pass in an episode number to filter the list by. If I do, I return an array of the episode-filtered beers. If no episode number is provided, I just return an array of the full list of beers.&lt;/p&gt;
&lt;p&gt;Now I can create that view from the image above by importing my function and using it like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;BeerList.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;astro-icon/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;@astrojs/image/components&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beerList&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;./utilities/beerlist.mjs&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;beers&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;beerList&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;beer-container&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beers&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;beer-image&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/beer/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Image&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/images/beer/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;.png&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aspectRatio&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;1:1&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;webp&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;              &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;beer-name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;brewery&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;brewery&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/bottle/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;beer-details&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;fluent:info-24-filled&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/bottle/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;beer&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;View Details&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  {    beers.map((beer) =&gt; (      &lt;div class=&quot;&quot;&gt;        &lt;div class=&quot;&quot;&gt;          &lt;a href=&quot;&quot;&gt;            &lt;Image              src={&amp;#x60;/images/beer/${beer.image}.png&amp;#x60;}              width=&amp;#x22;300&amp;#x22;              aspectRatio=&amp;#x22;1:1&amp;#x22;              format=&amp;#x22;webp&amp;#x22;              alt={&amp;#x60;${beer.brewery} ${beer.name}&amp;#x60;}            /&gt;          &lt;/a&gt;        &lt;/div&gt;        &lt;div class=&quot;&quot;&gt;          &lt;div class=&quot;&quot;&gt;{beer.brewery}&lt;/div&gt;          &lt;div&gt;            &lt;a href=&quot;&quot;&gt;{beer.name}&lt;/a&gt;          &lt;/div&gt;          &lt;div class=&quot;&quot;&gt;            &lt;span&gt;                          &lt;/span&gt;            &lt;span&gt;              &lt;a href=&quot;&quot;&gt;View Details&lt;/a&gt;            &lt;/span&gt;          &lt;/div&gt;        &lt;/div&gt;      &lt;/div&gt;    ))  }&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The fun part is everything inside the map function. As you can see, my beerList function returns an array of beers. I map that so that for each beer in the array, I output the HTML inside the map function. This consists of an image of the beer, the brewery name, the beer name, and a link to view the page for that beer.&lt;/p&gt;
&lt;p&gt;You can also make your maps more legible by creating a component to use inside the map. Here’s an example from the code for the paginated blog posts on this site that uses a Post component to do all the rendering of each post, just passing the individual mapped post to the component. It looks neater and is easier to understand, but it means creating another component. It just depends how much you want to break things down into separate components. If you need to show posts in a similar manner elsewhere besides the paginated list, you may want to do it by mapping your array items as props to a separate component, like below.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;[page].astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;test&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;aria-label&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;Post list&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;post.content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Pager&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; , &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;pageSize&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;pageSize&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#800000;--2:#8DDB8C&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Base&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  &lt;section aria-label=&quot;&quot;&gt;    {      posts &amp;#x26;&amp;#x26;        posts.map((post) =&gt; {          return (                      );        })    }      &lt;/section&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The Astro docs have a good example of using the map function in the &lt;a href=&quot;https://docs.astro.build/en/migrate/#converting-existing-md-files-to-mdx&quot;&gt;“Converting markdown to MDX” guide&lt;/a&gt; and (more usefully for most people) the &lt;a href=&quot;https://docs.astro.build/en/reference/api-reference/#astroglob&quot;&gt;Astro.glob function documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By the way, if you’re wondering why I treat episode number as a number sometimes and treat it like a string other times (inside beer.json, for example), rest assured you aren’t the only one wondering. I took that json file from my existing Eleventy site for Friends with Beer and didn’t think much about it. Refinements are certainly a valid consideration.&lt;/p&gt;</content:encoded><summary>JavaScript array maps are a common pattern in Astro, and very useful ones at that.</summary></item><item><title>This Is a Blog</title><link>https://scottwillsey.com/this-blog</link><guid isPermaLink="true">https://scottwillsey.com/this-blog</guid><description>This is a blog, and there are some other things I want from my website.</description><pubDate>Mon, 19 Sep 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a blog.&lt;/p&gt;
&lt;p&gt;After reading that, you may be thinking “Omg, he’s hit his head and now he’s reduced to touching everything he sees and saying its name out loud”, but here’s what I’m getting at: it’s not a wiki or a digital garden or a set of links for future reference. All of those things are useful, and they’re all things I’m considering as additions to this site. I’m just not sure yet what combination of these I’ll wind up with.&lt;/p&gt;
&lt;p&gt;Wikipedia seems to define a &lt;a href=&quot;https://en.wikipedia.org/wiki/Personal_wiki&quot;&gt;personal wiki&lt;/a&gt; as something on a local computer or USB stick, to be carried around.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; But I reject their reality and substitute my own. There are many online personal wikis that are done very well and provide utility to both the site owner and anyone else who wanders into them. At some point, the line between personal and public wiki could get debatable, but it’s pretty easy to categorize a wiki made by an individual, for primarily that individual and anyone else who might care, containing information of interest to that specific individual, as a personal wiki.&lt;/p&gt;
&lt;p&gt;I first started thinking about an online personal wiki when I was into &lt;a href=&quot;https://www.11ty.dev&quot;&gt;Eleventy&lt;/a&gt;, and I came across &lt;a href=&quot;https://intersect.rknight.me&quot;&gt;Robb Knight’s personal wiki&lt;/a&gt; built in Eleventy and &lt;a href=&quot;https://github.com/rknightuk/intersect&quot;&gt;made public on GitHub&lt;/a&gt;. I was planning on taking his code and modifying it to suit my needs. But then more pressing projects happened, and then I started getting into &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;, and the Eleventy wiki never happened. However, I like the idea because I do want an always accessible categorized set of links I can rely on, and I like the wiki idea as a container for those links. Links + context, in other words. The result is that now I’m going to need to make my own in Astro, and if you think that sounds like a complaint, you don’t realize how much fun I’m having working with Astro. &lt;span role=&quot;img&quot; aria-label=&quot;face with tears of joy&quot;&gt;😂&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://maggieappleton.com/garden-history&quot;&gt;Digital Garden&lt;/a&gt; concept is a little harder for me to decide what I want to do with. Digital gardens seem to be more like blogs than wikis in terms of post style, but more like wikis in terms of linking to concepts or being categorized in a certain way. It’s very nebulous. Also it seems like digital gardens are more about reading experience and less about finding information quickly or efficiently. I’ve never seen a digital garden yet where I could find what I thought was the root of a topic or category and dig into it. It’s more like wandering around finding things randomly, which doesn’t really meet my needs for linking to things in an organized manner nor for blogging things that are semi-easy to follow as a narrative.&lt;/p&gt;
&lt;p&gt;And let’s be honest, there are only so many hours in the day and I already have put off making a wiki for months, at least. So I think right now I’ll pursue a strategy of making a personal wiki site subdomain as well as slowly adding in some of my posts from the previous incarnation of the blog to this one.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/scottaw&quot;&gt;What say ye&lt;/a&gt;, dear reader?&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Strangely enough for a wiki site that’s dependent on being online… or maybe it’s not so strange at all. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><summary>This is a blog, and there are some other things I want from my website.</summary></item><item><title>RSS, Astro, and Me – Part 2</title><link>https://scottwillsey.com/rss-pt2</link><guid isPermaLink="true">https://scottwillsey.com/rss-pt2</guid><description>The details of my custom RSS feed.</description><pubDate>Mon, 12 Sep 2022 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in &lt;a href=&quot;https://scottwillsey.com/rss-pt1&quot;&gt;Part 1&lt;/a&gt; of this installment, while trying to modify my site RSS feed to contain the full body of each post in my feed items, I ran into an inconvenient truth about how &lt;a href=&quot;https://mdxjs.com&quot;&gt;MDX&lt;/a&gt; exposes its file content as a component and how I could not use that component outside of an &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; component. JavaScript just doesn’t know what it is. Support for the MDX Content component has to be built into whatever framework you’re using.&lt;/p&gt;
&lt;p&gt;Astro, of course, is built to use MDX and take full advantage of the MDX Content component, so &lt;a href=&quot;https://astro.build/chat&quot;&gt;Astro Discord&lt;/a&gt; member Chris Adiante proposed I simply use an Astro component to create the RSS (with full access to the MDX content) and then have it write the rss file to the file system. Since my site is Astro SSG (fully static, only changing when I rebuild the site) and not &lt;a href=&quot;https://docs.astro.build/en/guides/server-side-rendering/&quot;&gt;Astro SSR&lt;/a&gt; (server-rendered on demand), I can use this technique without any problems.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;By the way, Chris is the creator of the really amazing looking &lt;a href=&quot;https://astro-m2dx.netlify.app&quot;&gt;Astro M²DX remark plugins&lt;/a&gt;. If you’re using MDX with Astro, you should definitely give these a look!&lt;/p&gt;
&lt;h2 id=&quot;the-strategy&quot;&gt;The Strategy&lt;/h2&gt;
&lt;p&gt;In order to write an RSS feed using an Astro component, the Astro component has to get called – or to put it another way, it has to be used in a page. It can’t just sit in a folder in src. Also, it should be called once and once only. It can’t be put inside a layout file used by multiple pages because I want it written just once during the build. And finally, it has to have no effect on the rendering of the page that it’s in. Its purpose is to generate the RSS for all site posts and then write that RSS to a file called rss.xml. It has nothing that should be displayed, and it cannot alter the output of the page that hosts it.&lt;/p&gt;
&lt;p&gt;To meet these requirements, I decided to use this Astro component in index.astro, the Astro page that gets built into index.html.&lt;/p&gt;
&lt;h2 id=&quot;the-components&quot;&gt;The Components&lt;/h2&gt;
&lt;p&gt;I use two components to create my RSS file, in the manner suggested by Chris Adiante: WriteFile.astro and RssXml.astro. RssXml.astro generates the RSS and WriteFile takes its output and dumps it to disk in the form a file called rss.xml.&lt;/p&gt;
&lt;h3 id=&quot;rssxmlastro&quot;&gt;RssXml.astro&lt;/h3&gt;
&lt;p&gt;The way RssXml.astro works is dictated by the fact that in order to render, it needs to directly output some html tags outside a javascript loop. This is because Astro components write html. It’s how they work.&lt;/p&gt;
&lt;p&gt;The fact that Astro components write html should not be overlooked because it can also mess with the actual RSS XML generated, a truth that caused me much grief until I learned about &lt;a href=&quot;https://docs.astro.build/en/core-concepts/astro-components/#fragments%E2%80%94multiple-elements&quot;&gt;Fragments&lt;/a&gt; and &lt;a href=&quot;https://docs.astro.build/en/reference/directives-reference/#sethtml&quot;&gt;set:html&lt;/a&gt;. Using them in the combination &lt;code&gt;&amp;#x3C;Fragment set:html=&quot;&quot; /&gt;&lt;/code&gt; outputs RSS XML that isn’t messed with by Astro trying to ruin the format of XML link elements, for example.&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;src/components/RssXml.astro&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../components/utilities/DateFormat.js&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;rssHeaderXml&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;?xml-stylesheet href=&quot;/rss/styles.xsl&quot; type=&quot;text/xsl&quot;?&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;rss version=&quot;2.0&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;channel&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;title&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;/title&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;description&gt;&amp;#x3C;![CDATA[ &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt; ]]&gt;&amp;#x3C;/description&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;link&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;/link&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#006BB8;--2:#6CB6FF&quot;&gt;rssFooterXml&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;  &amp;#x3C;/channel&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;/rss&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#888B97;--0fs:italic;--1:#007A00;--2:#949EA8&quot;&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Fragment&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;set:html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;rssHeaderXml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Fragment&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;item&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;title&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;/title&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;link&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;basename&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;extname&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;/link&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;guid&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;basename&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;extname&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;/guid&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;description&gt;&amp;#x3C;![CDATA[ &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;]]&gt;&amp;#x3C;/description&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;pubDate&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#96D0FF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&amp;#x3C;/pubDate&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;content:encoded&gt;&amp;#x3C;![CDATA[&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;post.Content&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Fragment&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;]]&gt;&amp;#x3C;/content:encoded&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515;--2:#96D0FF&quot;&gt;&amp;#x3C;/item&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#A31515;--2:#96D0FF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Fragment&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;set:html&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;rssFooterXml&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;&lt;?xml-stylesheet href=&amp;#x22;/rss/styles.xsl&amp;#x22; type=&amp;#x22;text/xsl&amp;#x22;?&gt;&lt;rss version=&quot;&quot;&gt;  &lt;channel&gt;    &lt;title&gt;${config.get(&amp;#x22;title&amp;#x22;)}&lt;/title&gt;    &lt;description&gt;&lt;![CDATA[ ${config.get(&amp;#x22;description&amp;#x22;)} ]]&gt;&lt;/description&gt;    &lt;link&gt;${config.get(&amp;#x22;url&amp;#x22;)}&amp;#x60;;const rssFooterXml = &amp;#x60;  &lt;/channel&gt;  &lt;/rss&gt;  &amp;#x60;;---{allPosts.map(post =&gt;  &lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded><summary>The details of my custom RSS feed.</summary></item><item><title>RSS, Astro, and Me – Part 1</title><link>https://scottwillsey.com/rss-pt1</link><guid isPermaLink="true">https://scottwillsey.com/rss-pt1</guid><description>Astro makes some things incredibly simple, and other things not nearly so.</description><pubDate>Tue, 06 Sep 2022 22:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The first &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; site I put on the web was &lt;a href=&quot;https://siracusasays.com&quot;&gt;Siracusa Says&lt;/a&gt;, which went live on August 7th. The second Astro site was this site, on August 21st. If you think about how bare bones this site is, and that there’s a 3 week gap there, you might be tempted to think that Astro doesn’t allow for particularly quick development. The truth is, it &lt;em&gt;does&lt;/em&gt;, but I also have a day job that was more demanding than normal during that time. In fact, this site was super simple to build. The thing that took me the longest was figuring out a look that I would only have to be 90% ashamed of.&lt;/p&gt;
&lt;p&gt;I’m not a designer.&lt;/p&gt;
&lt;p&gt;But it’s not all unicorns and fluffy kitties with Astro. Astro is a very new framework and it’s very much a work in progress. One of the late design decisions taken by the development team before Astro 1.0 was released was to stop developing customized markdown with component support, and make markdown just markdown, and use &lt;a href=&quot;https://mdxjs.com&quot;&gt;MDX&lt;/a&gt; for markdown with component support.&lt;/p&gt;
&lt;p&gt;MDX is an interesting animal. If you create an MDX file, the MDX spec will give you access to parts of that file in different ways. For example, the body of the document (in other words, the actual content) is exposed as a component. It’s an object. And being able to access that object depends on whatever framework you’re using supporting MDX and providing that access for you.&lt;/p&gt;
&lt;p&gt;Astro does provide this ability to access MDX content as an object. Let’s say you grab all your site’s posts, which happen to be mdx files, using &lt;a href=&quot;https://docs.astro.build/en/reference/api-reference/#astroglob&quot;&gt;Astro.glob&lt;/a&gt;, like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.ruote.css&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;Astro&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;../content/*.mdx&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;-&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;    new Date(b.frontmatter.date).valueOf() -    new Date(a.frontmatter.date).valueOf(),);&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You now have an array of posts in the variable allPosts. You can use JavaScript’s &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map&quot;&gt;map function&lt;/a&gt; to deal with them individually, like this:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;allPosts&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;mdxpost&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#D30000;--2:#6CB6FF&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--2:#F5776E&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;mdxpost&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;mdxpost.Content&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--0:#FFCB6B;--1:#227188;--2:#8DDB8C&quot;&gt;Post&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#800000;--2:#ADBAC7&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#F07178;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt; {    return (          );  });}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Without worrying too much about the rest of the details here, just understand that &lt;code&gt;&amp;#x3C;mdxpost.Content /&gt;&lt;/code&gt; is a component object that exposes the content from one post. The map contains all the posts, and each mapped mdxpost has a .Content component that holds the content.&lt;/p&gt;
&lt;p&gt;If it makes your head hurt and you find it weird, you’re not alone. I guess people coming from JavaScript frameworks like React might be used to things like this - I’m not really sure because I don’t know anything about React. At any rate, this type of JavaScript component is not an unknown thing, it’s just new to me.&lt;/p&gt;
&lt;p&gt;Now that you have some of the backstory on how MDX works, let me just say that it created a bit of a problem for me with respect to my RSS feed. The reason for this is that Astro components output HTML. Only HMTL. They can’t output JSON or XML or anything other than HTML. This means the &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/rss&quot;&gt;@astrojs/rss package&lt;/a&gt; that provides RSS support to Astro doesn’t &lt;em&gt;use&lt;/em&gt; Astro components to create the RSS file, it uses JavaScript (most likely &lt;a href=&quot;https://www.typescriptlang.org&quot;&gt;TypeScript&lt;/a&gt;). It therefore does not support the MDX file Content component object, and it therefore means that creating an RSS feed that Astro way limits me to a summary type feed, without full body content for each item in the feed.&lt;/p&gt;
&lt;p&gt;Here’s my rss.xml.js for the Siracusa Says RSS feed as an example:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;rss.xml.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--0fs:italic;--1:#AC00D8;--2:#F5776E&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#F5776E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rss&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;stylesheet&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;/rss/styles.xsl&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;site&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episodes&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;reverse&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--0fs:italic;--1:#001080;--2:#F69D50&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#C792EA;--1:#0000FF;--2:#F5776E&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF;--2:#F5776E&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;episodes.path&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--2:#ADBAC7&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;rfc2822&lt;/span&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080&quot;&gt;pubDate&lt;/span&gt;&lt;span style=&quot;--1:#000000&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--2:#ADBAC7&quot;&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--1:#001080;--2:#ADBAC7&quot;&gt;&lt;span style=&quot;--0:#F07178&quot;&gt;customData&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&amp;#x3C;enclosure url=&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#82AAFF;--1:#795E26;--2:#DCBDFB&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--1:#A31515;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;episodes.audioPrefix&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#96D0FF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#BABED8&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;audiofile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#C3E88D;--1:#A31515&quot;&gt;&quot; length=&quot;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;${&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;episode&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#96D0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#001080;--2:#ADBAC7&quot;&gt;bytes&lt;/span&gt;&lt;span style=&quot;--2:#96D0FF&quot;&gt;&lt;span style=&quot;--0:#89DDFF;--1:#0000FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--1:#A31515&quot;&gt;&lt;span style=&quot;--0:#C3E88D&quot;&gt;&quot; type=&quot;audio/mpeg&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--1:#000000;--2:#ADBAC7&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--0:#BABED8;--1:#000000;--2:#ADBAC7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--0:#89DDFF;--1:#000000;--2:#ADBAC7&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&quot;&gt;  rss({    stylesheet: &amp;#x22;/rss/styles.xsl&amp;#x22;,    title: config.get(&amp;#x22;title&amp;#x22;),    description: config.get(&amp;#x22;description&amp;#x22;),    site: config.get(&amp;#x22;url&amp;#x22;),    items: Array.from(episodes)      .reverse()      .map((episode) =&gt; ({        title: episode.frontmatter.title,        link: new URL(          path.join(config.get(&amp;#x22;episodes.path&amp;#x22;), episode.frontmatter.slug),          config.get(&amp;#x22;url&amp;#x22;),        ),        pubDate: rfc2822(episode.frontmatter.pubDate),        description: episode.frontmatter.description,        customData: &amp;#x60;&lt;enclosure url=&quot;&quot;&gt;&lt;/enclosure&gt;&amp;#x60;,      })),  });&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Initially I thought I could use the customData property of the rss package to stuff my MDX file content into, but there is literally no way to get add the .Content component in a way that this JavaScript understands. The best I can do is see the function that returns it or see [object Object]. Not very useful.&lt;/p&gt;
&lt;p&gt;To summarize all the above: using MDX as my post content files and @astrojs/rss to support rss feed creation in Astro resulted in my only being able to provide truncated RSS feed items. In order to solve this, I would have to take the advice of Astro Discord member Chris-Adiante and use an Astro component to render the RSS, allowing access to each posts .Content component, and then writing the rss to the filesystem as an rss.xml file.&lt;/p&gt;
&lt;p&gt;That’s exactly what I did. I’ll show you how in &lt;a href=&quot;https://scottwillsey.com/rss-pt2&quot;&gt;Part 2&lt;/a&gt;.&lt;/p&gt;</content:encoded><summary>Astro makes some things incredibly simple, and other things not nearly so.</summary></item><item><title>Anew</title><link>https://scottwillsey.com/anew</link><guid isPermaLink="true">https://scottwillsey.com/anew</guid><description>My website has begun anew, and here&apos;s why.</description><pubDate>Sun, 21 Aug 2022 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The last time I posted to my site was on February 24th. That’s 6 months between posts.&lt;/p&gt;
&lt;p&gt;Far from being dead, the site was just undergoing a metamorphosis that was invisible to you. And to me, very honestly. I’ve been working on other projects, like &lt;a href=&quot;https://friendswithbeer.com&quot;&gt;Friends with Beer&lt;/a&gt; and &lt;a href=&quot;https://siracusasays.com&quot;&gt;Siracusa Says&lt;/a&gt;, so this site was pushed to the back of the queue for its inevitable and much needed refactoring.&lt;/p&gt;
&lt;p&gt;When I built this site, I was new to modern static site generators. I used &lt;a href=&quot;https://gohugo.io&quot;&gt;Hugo&lt;/a&gt;, which was super popular at the time (and maybe still is) because of its performance and because the web store was one of two wildly divergent camps: single-page web applications, built in React or similar, and completely static sites with little to no interactivity. Hugo is great for fully static websites because it’s FAST and because it’s a very well thought out framework with many of the features people want included by default. But it uses the horrific Go templating language which was apparently created by &lt;a href=&quot;https://lingojam.com/EnglishtoYoda&quot;&gt;Yoda&lt;/a&gt; and which broke my brain every time I tried to make an even semi-complicated query or logic statement.&lt;/p&gt;
&lt;p&gt;Even worse than Go templating language when I built this site with Hugo was my understanding of how to structure it. I didn’t fully grasp how Hugo built pages and directories based on template names and types, and so I came up with a very convoluted scheme in which all of my different categories had their own folders. Not great. And I should never have had so many categories to begin with, which was another failure of my imagination. The end result was a site that was way too complicated for a guy who just wanted to babble about things most people will never read.&lt;/p&gt;
&lt;p&gt;I thought I’d build the next iteration with &lt;a href=&quot;https://www.11ty.dev&quot;&gt;Eleventy&lt;/a&gt;. It’s what I used for &lt;a href=&quot;https://friendswithbeer.com&quot;&gt;Friends with Beer&lt;/a&gt;, and I learned a lot from that. The beauty of Eleventy is that it’s &lt;a href=&quot;https://nodejs.dev/en/&quot;&gt;Node.js&lt;/a&gt; based and allows for templates and layouts that use good old Javascript instead of terrible templating languages, although I primarily used Nunjucks for the templating, because that’s what a lot of the best examples I could find at the time used. Also, since you can just import modules that you or other people write, I was able to just write a lot of straight code in modules and use those in my layouts.&lt;/p&gt;
&lt;p&gt;But then as I was getting my head wrapped around THAT mode of working, along came a new framework: &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;. On the surface, Astro is a lot like Eleventy. It’s Node.js based, it allows for a lot of Javascript (actually its default is Typescript) modules, and it has a great static site story. But it’s more than just that, and there are a list of things that make it more attactive to me than Eleventy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It doesn’t use templating languages. It used HTML and Javascript and Components.&lt;/li&gt;
&lt;li&gt;It was built to allow for flexibility in terms of interactivity. Zero Javascript to the client by default, but an &lt;a href=&quot;https://jasonformat.com/islands-architecture/&quot;&gt;Islands Architecture&lt;/a&gt; approach allows adding what you need as you need it. An example is my &lt;a href=&quot;https://scottwillsey.com/search&quot;&gt;search page&lt;/a&gt;, powered a &lt;a href=&quot;https://www.solidjs.com&quot;&gt;Solidjs&lt;/a&gt; component that executes everything on the client in Javascript.&lt;/li&gt;
&lt;li&gt;It has an &lt;a href=&quot;https://medium.com/kongcepts-hq/server-side-rendering-bc6a979b3a7c&quot;&gt;SSR&lt;/a&gt; story as well, and you can deploy it to several different platforms including hosting your own with a &lt;a href=&quot;https://docs.astro.build/en/guides/integrations-guide/node/&quot;&gt;Node adapter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Finally, it’s just very easy to build with. It’s more reminiscient of the old days of Asp.NET or PHP but with modern frameworks and platform functionality. It’s user friendly for both programmers and site visitors, and it remembers what the web actually is and works with those strengths instead of pretending the web is something it’s not.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Astro had a very tumultous beta period, but the developers were purposefully working towards getting a stable 1.0 that could be used and built upon, and I think they’ve succeeded. There are some weirdnesses and omissions that most of us who’ve used other frameworks notice immediately, but mostly there aren’t, and mostly it’s just very easy and fun to work with. Just as importantly, the team and community behind it is overwhelmingly positive.&lt;/p&gt;
&lt;p&gt;This site runs on Astro. It makes use of things like &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/image&quot;&gt;@astrojs/image&lt;/a&gt;, &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/mdx&quot;&gt;@astrojs/mdx&lt;/a&gt;, &lt;a href=&quot;https://www.npmjs.com/package/@astrojs/rss&quot;&gt;@astrojs/rss&lt;/a&gt;, &lt;a href=&quot;https://www.npmjs.com/package/astro-icon&quot;&gt;data-icon&lt;/a&gt;, &lt;a href=&quot;https://www.solidjs.com&quot;&gt;SolidJs&lt;/a&gt;, and a few other tools, as well as the standard use of layouts and components that are the backbone of building an Astro site.&lt;/p&gt;
&lt;p&gt;I will absolutely write about Astro and some of the things I’ve had to learn on this site. As always, I’m not a professional programmer and I’m certainly not the quickest or smartest. I do it because I enjoy it, and I think that’s ok. More people should feel good about doing things they enjoy but probably wouldn’t be considered authorities on. Life will be better if we get back to allowing each other that more often again.&lt;/p&gt;
&lt;p&gt;There’s also the matter of my ever-evolving computer platform approach, and I have made some decisions in that regard lately. I can’t wait to get started on them, but that will take some money I don’t have just yet, and it will be something I write about quite a lot.&lt;/p&gt;
&lt;p&gt;For now… let’s begin anew, friend.&lt;/p&gt;</content:encoded><summary>My website has begun anew, and here&apos;s why.</summary></item></channel></rss>