Compare changes

Choose any two refs to compare.

.gitignore

This is a binary file and will not be displayed.

+3 -3
.gitmodules
··· 1 - [submodule "themes/re-terminal"] 2 - path = themes/re-terminal 3 - url = https://github.com/mirus-ua/hugo-theme-re-terminal.git
··· 1 + [submodule "themes/terminus"] 2 + path = themes/terminus 3 + url = https://github.com/ebkalderon/terminus.git
.hugo_build.lock

This is a binary file and will not be displayed.

+2 -1
README.md
··· 1 - Built with [Hugo](https://gohugo.io/), using the [re-Terminal](https://github.com/mirus-ua/hugo-theme-re-terminal) theme.
··· 1 + 2 + Built with [Zola](https://www.getzola.org/) using a modified [Terminus](https://www.getzola.org/themes/terminus/) theme.
-5
archetypes/default.md
··· 1 - +++ 2 - title = '{{ replace .File.ContentBaseName "-" " " | title }}' 3 - date = {{ .Date }} 4 - draft = true 5 - +++
···
+67
config.toml
···
··· 1 + # The URL the site will be built for 2 + base_url = "https://vylion.com" 3 + 4 + # Whether to automatically compile all Sass files in the sass directory 5 + compile_sass = true 6 + 7 + # Whether to build a search index to be used later on by a JavaScript library 8 + build_search_index = true 9 + 10 + theme = "terminus" 11 + 12 + 13 + default_language = "en" 14 + title = "guillermo serrahima" 15 + author = "Guillermo Serrahima" 16 + # taxonomies = [] 17 + 18 + [languages.es] 19 + # generate_feeds = true 20 + # build_search_index = true 21 + title = "Guillermo Serrahima" 22 + # taxonomies = [] 23 + 24 + [markdown] 25 + # Whether to do syntax highlighting 26 + # Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola 27 + highlight_code = true 28 + 29 + # The theme to use for code highlighting. 30 + # See below for list of allowed values. 31 + highlight_theme = "monokai" 32 + 33 + # When set to "true", emoji aliases translated to their corresponding 34 + # Unicode emoji equivalent in the rendered Markdown files. (e.g.: :smile: => ๐Ÿ˜„) 35 + render_emoji = true 36 + 37 + # Whether footnotes are rendered in the GitHub-style (at the bottom, with back references) or plain (in the place, where they are defined) 38 + bottom_footnotes = true 39 + 40 + # When set to "true", support for GitHub-style alerts, a.k.a. callouts or admonitions, is enabled in the Markdown parser. 41 + github_alerts = true 42 + 43 + [extra] 44 + # Put all your custom variables here 45 + fediverse_creator = "@me.vylion.com@bsky.brid.gy" 46 + show_default_author = false 47 + 48 + #main_menu = [ 49 + # { name = "cv", url = "cv", trailing_slash = true }, 50 + #] 51 + 52 + socials = [ 53 + { name = "linkedin", url = "https://www.linkedin.com/in/ebkalderon" }, 54 + { name = "mastodon", url = "https://sk.vylion.com/@coldrange" }, 55 + { name = "bluesky", url = "https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd" }, 56 + ] 57 + 58 + [extra.content_security_policy] 59 + enable = true 60 + allowed_domains = [ 61 + { directive = "img-src", domains = ["'self'", "data:", "www.w3.org"] }, 62 + #{ directive = "img-src", domains = ["'self'", "www.w3.org"] }, 63 + ] 64 + 65 + [extra.responsive_images] 66 + widths = [640, 784, 1280, 1920, 2560] 67 + fallback_width = 1280
+2 -2
content/_index.es.md
··· 1 +++ 2 - title = "Inicio" 3 +++ 4 5 ยกHola! Soy Guillermo Serrahima, un ingeniero de *software* del รกrea de Barcelona, Espaรฑa. Este es mi sitio web personal. 6 7 - Puedes consultar mi [currรญculum]({{< ref "cv" >}}), o echar un vistazo a mis [proyectos](https://git.vylion.com/vylion).
··· 1 +++ 2 + title = "Pรกgina principal" 3 +++ 4 5 ยกHola! Soy Guillermo Serrahima, un ingeniero de *software* del รกrea de Barcelona, Espaรฑa. Este es mi sitio web personal. 6 7 + A lo mejor te gustarรญa ojear las diferentes secciones:
+1 -1
content/_index.md
··· 4 5 Hello! I'm Guillermo Serrahima, a Software Engineer from the area of Barcelona, Spain. This is my personal site. 6 7 - You can take a look at my [rรฉsumรฉ]({{< ref "cv" >}}), or check out my [projects](https://git.vylion.com/vylion).
··· 4 5 Hello! I'm Guillermo Serrahima, a Software Engineer from the area of Barcelona, Spain. This is my personal site. 6 7 + Maybe you'd like to check out the different sections:
+2 -2
content/cv.es.md
··· 1 +++ 2 - title = "Curriculum Vitae" 3 4 description = "Conocimientos y experiencia previa" 5 +++ ··· 80 * Varias instancias de [Portainer](https://www.portainer.io/) <abbr title="Community Edition">CE</abbr> (una por cada servidor) 81 * Una instancia privada de [RustDesk](https://rustdesk.com/) 82 * Un servidor <abbr title="Personal Data Server">PDS</abbr> de <abbr title="Authenticated Transfer Protocol">ATProto</abbr> para hospedar mi propio [perfil](https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd) 83 - * Un servidor *knot* en `knot1.tngl.vylion.com` para [mis propios](https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd) repositorios de [Tangled](https://tangled.org/) 84 85 Ahora mismo estoy usando un teclado mecรกnico de construcciรณn personalizada, corriendo mi propio *firmware* desarrollado con [QMK](https://qmk.fm/) en C++. 86
··· 1 +++ 2 + title = "Mi CV" 3 4 description = "Conocimientos y experiencia previa" 5 +++ ··· 80 * Varias instancias de [Portainer](https://www.portainer.io/) <abbr title="Community Edition">CE</abbr> (una por cada servidor) 81 * Una instancia privada de [RustDesk](https://rustdesk.com/) 82 * Un servidor <abbr title="Personal Data Server">PDS</abbr> de <abbr title="Authenticated Transfer Protocol">ATProto</abbr> para hospedar mi propio [perfil](https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd) 83 + * A servidor *knot* en `knot1.tngl.vylion.com` para [mis propios](https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd) repositorios de [Tangled](https://tangled.org/) 84 85 Ahora mismo estoy usando un teclado mecรกnico de construcciรณn personalizada, corriendo mi propio *firmware* desarrollado con [QMK](https://qmk.fm/) en C++. 86
+1 -1
content/cv.md
··· 1 +++ 2 - title = "Rรฉsumรฉ" 3 4 description = "Skills and previous experience" 5 +++
··· 1 +++ 2 + title = "My CV" 3 4 description = "Skills and previous experience" 5 +++
-55
hugo.toml
··· 1 - baseURL = 'https://vylion.com/' 2 - title = 'Guillermo Serrahima' 3 - 4 - theme = 're-terminal' 5 - 6 - defaultContentLanguage = 'en' 7 - defaultContentLanguageInSubdir = true 8 - #disableDefaultLanguageRedirect = false 9 - 10 - [params] 11 - showLanguageSelector = true 12 - themeColor = 'blue' 13 - centerTheme = true 14 - favicon = 'favicon.png' 15 - [params.logo] 16 - logoText = 'guillermo serrahima' 17 - 18 - [languages] 19 - [languages.en] 20 - disabled = false 21 - languageCode = 'en-us' 22 - languageDirection = 'ltr' 23 - languageName = 'English' 24 - [languages.en.menu] 25 - [[languages.en.menu.main]] 26 - identifier = "cv" 27 - name = "rรฉsumรฉ" 28 - url = "/en/cv" 29 - weight = 10 30 - [[languages.en.menu.main]] 31 - identifier = "projects" 32 - name = "projects" 33 - url = "https://git.vylion.com/vylion" 34 - weight = 0 35 - 36 - [languages.es] 37 - disabled = false 38 - languageCode = 'es-es' 39 - languageDirection = 'ltr' 40 - languageName = 'Espaรฑol' 41 - [languages.es.menu] 42 - [[languages.es.menu.main]] 43 - identifier = "cv" 44 - name = "cv" 45 - url = "/es/cv" 46 - weight = 10 47 - [[languages.es.menu.main]] 48 - identifier = "projects" 49 - name = "proyectos" 50 - url = "https://git.vylion.com/vylion" 51 - weight = 0 52 - 53 - [markup] 54 - [markup.goldmark.renderer] 55 - unsafe = true
···
+83
public/404.html
···
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + 4 + <head> 5 + <meta charset="utf-8"> 6 + <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src-attr 'unsafe-inline'; img-src 'self' data: www.w3.org"> 8 + 9 + <title>Page not found | guillermo serrahima</title> 10 + 11 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 12 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 13 + <link rel="stylesheet" href="https://vylion.com/css/style.css?h=22b8cbf1b9d367db5ee6"> 14 + <script src="https://vylion.com/js/auto-close-popover-on-resize.js?h=4ef87d6fc7b98b22e044" defer></script> 15 + <script src="https://vylion.com/js/copy-code-to-clipboard.js?h=6aac77c47d552a0ac847" defer></script> 16 + 17 + 18 + <meta name="robots" content="noindex, follow"> 19 + <meta name="theme-color" content="#211f1a"> 20 + <meta name="color-scheme" content="dark"> 21 + 22 + <meta property="og:type" content="website"> 23 + <meta property="og:site_name" content="guillermo serrahima"> 24 + <meta property="og:updated_time" content="2025-12-30T22:59:21.689373437+01:00"> 25 + <meta name="fediverse:creator" content="@me.vylion.com@bsky.brid.gy"> 26 + </head> 27 + 28 + <body class="layout-center"> 29 + <header class="header"> 30 + <div class="header-container"> 31 + <span class="header-logo-container"> 32 + <a href="https://vylion.com"> 33 + <span class="logo">guillermo serrahima</span> 34 + </a> 35 + </span> 36 + </div> 37 + 38 + <!-- translations_list.html --> 39 + 40 + 41 + 42 + </header> 43 + <main id="main"> 44 + <section class="framed"> 45 + <h1>404: Page not found...</h1> 46 + <p>Sorry, this page doesn't exist. Go back <a href="https://vylion.com">home</a>?</p> 47 + </section> 48 + </main> 49 + <footer class="footer"> 50 + <address class="socials"> 51 + <ul> 52 + <li> 53 + <a class="social-link" rel="me" href="https://www.linkedin.com/in/ebkalderon" title="linkedin" aria-label="linkedin"> 54 + <svg role="img" aria-label="linkedin icon"> 55 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/linkedin.svg#icon" /> 56 + </svg> 57 + </a> 58 + </li> 59 + <li> 60 + <a class="social-link" rel="me" href="https://sk.vylion.com/@coldrange" title="mastodon" aria-label="mastodon"> 61 + <svg role="img" aria-label="mastodon icon"> 62 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/mastodon.svg#icon" /> 63 + </svg> 64 + </a> 65 + </li> 66 + <li> 67 + <a class="social-link" rel="me" href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd" title="bluesky" aria-label="bluesky"> 68 + <svg role="img" aria-label="bluesky icon"> 69 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/bluesky.svg#icon" /> 70 + </svg> 71 + </a> 72 + </li> 73 + </ul> 74 + </address> 75 + <p class="copyright"> 76 + <span>ยฉ <time>2025</time> Guillermo Serrahima</span> 77 + <span>Powered by <a href="https://www.getzola.org">Zola</a></span> 78 + <span>Theme by <a href="https://eyalkalderon.com">ebkalderon</a></span> 79 + </p> 80 + </footer> 81 + </body> 82 + 83 + </html>
-53
public/bundle.min.js
··· 1 - (()=>{var t=document.querySelector(".container"),e=document.querySelectorAll(".menu");document.body.addEventListener("click",()=>{e.forEach(e=>{e.classList.contains("open")&&e.classList.remove("open")})}),window.addEventListener("resize",()=>{e.forEach(e=>{e.classList.remove("open")})}),e.forEach(n=>{const o=n.querySelector(".menu__trigger"),s=n.querySelector(".menu__dropdown");o.addEventListener("click",o=>{o.stopPropagation(),n.classList.contains("open")?n.classList.remove("open"):(e.forEach(e=>e.classList.remove("open")),n.classList.add("open")),s.getBoundingClientRect().right>t.getBoundingClientRect().right&&(s.style.left="auto",s.style.right=0)}),s.addEventListener("click",e=>e.stopPropagation())})})(),(()=>{var e=Object.getOwnPropertyNames,t=(t,n)=>function(){return n||(0,t[e(t)[0]])((n={exports:{}}).exports,n),n.exports},n=t({"<stdin>"(e,t){var s="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},n=function(e){var s,c,o=/\blang(?:uage)?-([\w-]+)\b/i,d=0,i={},t={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof n?new n(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++d}),e.__id},clone:function e(n,s){var o,i,a;switch(s=s||{},t.util.type(n)){case"Object":if(i=t.util.objId(n),s[i])return s[i];for(a in o={},s[i]=o,n)n.hasOwnProperty(a)&&(o[a]=e(n[a],s));return o;case"Array":return i=t.util.objId(n),s[i]?s[i]:(o=[],s[i]=o,n.forEach(function(t,n){o[n]=e(t,s)}),o);default:return n}},getLanguage:function(e){for(;e&&!o.test(e.className);)e=e.parentElement;return e?(e.className.match(o)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(s){var e,n,t=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(s.stack)||[])[1];if(t){e=document.getElementsByTagName("script");for(n in e)if(e[n].src==t)return e[n]}return null}},isActive:function(e,t,n){for(var s,o="no-"+t;e;){if(s=e.classList,s.contains(t))return!0;if(s.contains(o))return!1;e=e.parentElement}return!!n}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(e,n){var o,s=t.util.clone(t.languages[e]);for(o in n)s[o]=n[o];return s},insertBefore:function(e,n,s,o){var a,c,l,r=(o=o||t.languages)[e],i={};for(a in r)if(r.hasOwnProperty(a)){if(a==n)for(c in s)s.hasOwnProperty(c)&&(i[c]=s[c]);s.hasOwnProperty(a)||(i[a]=r[a])}return l=o[e],o[e]=i,t.languages.DFS(t.languages,function(t,n){n===l&&t!=e&&(this[t]=i)}),i},DFS:function e(n,s,o,i){i=i||{},c=t.util.objId;for(r in n)if(n.hasOwnProperty(r)){s.call(n,r,n[r],o||r);var r,c,a=n[r],l=t.util.type(a);"Object"!==l||i[c(a)]?"Array"!==l||i[c(a)]||(i[c(a)]=!0,e(a,s,r,i)):(i[c(a)]=!0,e(a,s,null,i))}}},plugins:{},highlightAll:function(e,n){t.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,s){var i,a,o={callback:s,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};t.hooks.run("before-highlightall",o),o.elements=Array.prototype.slice.apply(o.container.querySelectorAll(o.selector)),t.hooks.run("before-all-elements-highlight",o);for(a=0;i=o.elements[a++];)t.highlightElement(i,!0===n,o.callback)},highlightElement:function(n,s,i){var a,r,d,c=t.util.getLanguage(n),u=t.languages[c];n.className=n.className.replace(o,"").replace(/\s+/g," ")+" language-"+c,r=n.parentElement,r&&"pre"===r.nodeName.toLowerCase()&&(r.className=r.className.replace(o,"").replace(/\s+/g," ")+" language-"+c),a={element:n,language:c,grammar:u,code:n.textContent};function l(e){a.highlightedCode=e,t.hooks.run("before-insert",a),a.element.innerHTML=a.highlightedCode,t.hooks.run("after-highlight",a),t.hooks.run("complete",a),i&&i.call(a.element)}if(t.hooks.run("before-sanity-check",a),(r=a.element.parentElement)&&"pre"===r.nodeName.toLowerCase()&&!r.hasAttribute("tabindex")&&r.setAttribute("tabindex","0"),!a.code)return t.hooks.run("complete",a),0[0];t.hooks.run("before-highlight",a),a.grammar?s&&e.Worker?(d=new Worker(t.filename),d.onmessage=function(e){l(e.data)},d.postMessage(JSON.stringify({language:a.language,code:a.code,immediateClose:!0}))):l(t.highlight(a.code,a.grammar,a.language)):l(t.util.encode(a.code))},highlight:function(e,s,o){var i={code:e,grammar:s,language:o};return t.hooks.run("before-tokenize",i),i.tokens=t.tokenize(i.code,i.grammar),t.hooks.run("after-tokenize",i),n.stringify(t.util.encode(i.tokens),i.language)},tokenize:function(e,s){var o,r,i=s.rest;if(i){for(r in i)s[r]=i[r];delete s.rest}return o=new u,a(o,o.head,e),function e(s,o,i,r,c,d){for(_ in i)if(i.hasOwnProperty(_)&&i[_])for(v=i[_],v=Array.isArray(v)?v:[v],y=0;y<v.length;++y){if(d&&d.cause==_+","+y)return;var g,v,b,j,y,_,w,O,x,F,D,m=v[y],M=m.inside,S=!!m.lookbehind,z=!!m.greedy,R=m.alias;z&&!m.pattern.global&&(F=m.pattern.toString().match(/[imsuy]*$/)[0],m.pattern=RegExp(m.pattern.source,F+"g"));for(var N=m.pattern||m,u=r.next,f=c;u!==o.tail&&!(d&&f>=d.reach);f+=u.value.length,u=u.next){if(b=u.value,o.length>s.length)return;if(!(b instanceof n)){if(O=1,z){if(!(g=l(N,f,s,S)))break;var E=g.index,L=g.index+g[0].length,p=f;for(p+=u.value.length;p<=E;)u=u.next,p+=u.value.length;if(p-=u.value.length,f=p,u.value instanceof n)continue;for(j=u;j!==o.tail&&(p<L||"string"==typeof j.value);j=j.next)O++,p+=j.value.length;O--,b=s.slice(f,p),g.index-=f}else if(!(g=l(N,0,b,S)))continue;var E=g.index,C=g[0],A=b.slice(0,E),T=b.slice(E+C.length),k=f+b.length;d&&k>d.reach&&(d.reach=k),w=u.prev,A&&(w=a(o,w,A),f+=A.length),h(o,w,O),D=new n(_,M?t.tokenize(C,M):C,R,C),(u=a(o,w,D),T&&a(o,u,T),1<O)&&(x={cause:_+","+y,reach:k},e(s,o,i,u.prev,f,x),d&&x.reach>d.reach&&(d.reach=x.reach))}}}}(e,o,s,o.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(o)},hooks:{all:{},add:function(e,n){var s=t.hooks.all;s[e]=s[e]||[],s[e].push(n)},run:function(e,n){var o,i,s=t.hooks.all[e];if(s&&s.length)for(i=0;o=s[i++];)o(n)}},Token:n};function n(e,t,n,s){this.type=e,this.content=t,this.alias=n,this.length=0|(s||"").length}function l(e,t,n,s){e.lastIndex=t;var i,o=e.exec(n);return o&&s&&o[1]&&(i=o[1].length,o.index+=i,o[0]=o[0].slice(i)),o}function u(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function a(e,t,n){var o=t.next,s={value:n,prev:t,next:o};return t.next=s,o.prev=s,e.length++,s}function h(e,t,n){for(var s=t.next,o=0;o<n&&s!==e.tail;o++)s=s.next;(t.next=s).prev=t,e.length-=o}if(e.Prism=t,n.stringify=function e(n,s){if("string"==typeof n)return n;if(Array.isArray(n))return a="",n.forEach(function(t){a+=e(t,s)}),a;var a,r,c,o={type:n.type,content:e(n.content,s),tag:"span",classes:["token",n.type],attributes:{},language:s},i=n.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),t.hooks.run("wrap",o),r="";for(c in o.attributes)r+=" "+c+'="'+(o.attributes[c]||"").replace(/"/g,"&quot;")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+r+">"+o.content+"</"+o.tag+">"},!e.document)return e.addEventListener&&(t.disableWorkerMessageHandler||e.addEventListener("message",function(n){var s=JSON.parse(n.data),o=s.language,i=s.code,a=s.immediateClose;e.postMessage(t.highlight(i,t.languages[o],o)),a&&e.close()},!1)),t;s=t.util.currentScript();function r(){t.manual||t.highlightAll()}return(s&&(t.filename=s.src,s.hasAttribute("data-manual")&&(t.manual=!0)),!t.manual)&&(c=document.readyState,"loading"===c||"interactive"===c&&s&&s.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),t}(s);"undefined"!=typeof t&&t.exports&&(t.exports=n),"undefined"!=typeof global&&(global.Prism=n),n.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?\]\]>/i,tag:{pattern:/<\/?(?!\d)[^\s>/=$<%]+(?:\s(?:\s*[^\s>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>/]+/,inside:{namespace:/^[^\s>/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var o,i,s={};s["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:n.languages[t]},s.cdata=/^<!\[CDATA\[|\]\]>$/i,o={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:s}},o["language-"+t]={pattern:/[\s\S]+/,inside:n.languages[t]},i={},i[e]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:o},n.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(e,t){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:n.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,!function(e){var n,t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+`|(?:[^\\\\\r 2 - ()"']|\\\\[^])*)\\)`,"i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,n=e.languages.markup,n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),n.languages.js=n.languages.javascript,n.languages.actionscript=n.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),n.languages.actionscript["class-name"].alias="function",n.languages.markup&&n.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:n.languages.markup}}),n.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|Type|UserFile|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferSize|BufferedLogs|CGIDScriptTimeout|CGIMapExtension|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DTracePrivileges|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtFilterDefine|ExtFilterOptions|ExtendedStatus|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|KeepAlive|KeepAliveTimeout|KeptBodySize|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|LanguagePriority|Limit(?:InternalRecursion|Request(?:Body|FieldSize|Fields|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|MMapFile|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|ModMimeUsePathInfo|ModemStandard|MultiviewsMatch|Mutex|NWSSLTrustedCerts|NWSSLUpgradeable|NameVirtualHost|NoProxy|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|RLimitCPU|RLimitMEM|RLimitNPROC|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|SSIETag|SSIEndTag|SSIErrorMsg|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|SRPUnknownUserSeed|SRPVerifierFile|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UseStapling|UserName|VerifyClient|VerifyDepth)|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadStackSize|ThreadsPerChild|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/},n.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=โ‰ โ‰คโ‰ฅ*+\-/รท^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,ยฌยซยปใ€Šใ€‹]/},!function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",o={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},t={bash:o,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!/]|##?|%%?|\^\^?|,,?/,punctuation:/[[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:o}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:t.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:t.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},o.inside=e.languages.bash;for(var i=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=t.variable[1].inside,s=0;s<i.length;s++)a[i[s]]=e.languages.bash[i[s]];e.languages.shell=e.languages.bash}(n),n.languages.c=n.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),n.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},n.languages.c.string],comment:n.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:n.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete n.languages.c.boolean,!function(e){function n(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function t(e,t,s){return RegExp(n(e,t),s||"")}function r(e,t){for(var n=0;n<t;n++)e=e.replace(/<<self>>/g,function(){return"(?:"+e+")"});return e.replace(/<<self>>/g,"[^\\s\\S]")}var S="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",c="class enum interface record struct",_="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",f="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var v=l(c),d=RegExp(l(S+" "+c+" "+_+" "+f)),z=l(c+" "+_+" "+f),T=l(S+" "+c+" "+f),u=r("<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>",2),h=r("\\((?:[^()]|<<self>>)*\\)",2),o="@?\\b[A-Za-z_]\\w*\\b",m=n("<<0>>(?:\\s*<<1>>)?",[o,u]),i=n("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[z,m]),p="\\[\\s*(?:,\\s*)*\\]",D=n("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[i,p]),a=n("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[n("\\(<<0>>+(?:,<<0>>+)+\\)",[n("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[u,h,p])]),i,p]),s={keyword:d,punctuation:/[<>()?,.:[\]]/},w=`'(?:[^\r 3 - '\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'`,O=`"(?:\\\\.|[^\\\\"\r 4 - ])*"`;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[O]),lookbehind:!0,greedy:!0},{pattern:RegExp(w),greedy:!0,alias:"character"}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[i]),lookbehind:!0,inside:s},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[o,a]),lookbehind:!0,inside:s},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[o]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[v,m]),lookbehind:!0,inside:s},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[i]),lookbehind:!0,inside:s},{pattern:t("(\\bwhere\\s+)<<0>>",[o]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[D]),lookbehind:!0,inside:s},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[a,T,o]),inside:s}],keyword:d,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[o]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[o]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[h]),lookbehind:!0,alias:"class-name",inside:s},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[a,i]),inside:s,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[a]),lookbehind:!0,inside:s,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[o,u]),inside:{function:t("^<<0>>",[o]),generic:{pattern:RegExp(u),alias:"class-name",inside:s}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[v,m,o,a,d.source,h,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[m,h]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:d,"class-name":{pattern:RegExp(a),greedy:!0,inside:s},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var x=O+"|"+w,C=n(`/(?![*/])|//[^\r 5 - ]*[\r 6 - ]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>`,[x]),b=r(n(`[^"'/()]|<<0>>|\\(<<self>>*\\)`,[C]),2),k="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",F=n("<<0>>(?:\\s*\\(<<1>>*\\))?",[i,b]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[k,F]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[k]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[b]),inside:e.languages.csharp},"class-name":{pattern:RegExp(i),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var g=`:[^}\r 7 - ]+`,M=r(n(`[^"'/()]|<<0>>|\\(<<self>>*\\)`,[C]),2),A=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[M,g]),E=r(n(`[^"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<<self>>*\\)`,[x]),2),y=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[E,g]);function j(n,s){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[n]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[s,g]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:j(A,M)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[y]),lookbehind:!0,greedy:!0,inside:j(y,E)}]})}(n),n.languages.dotnet=n.languages.cs=n.languages.csharp,!function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n="\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b".replace(/<keyword>/g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp("(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+".replace(/<keyword>/g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(`(\\b(?:module|import)\\s+)(?:"(?:\\\\(?:\r 8 - |[^])|[^"\\\\\r 9 - ])*"|<[^<>\r 10 - ]*>|`+"<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>".replace(/<mod-name>/g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b[a-z_]\w*\s*<(?:[^<>]|<(?:[^<>])*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(n),n.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?|(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:ON|OFF|TRUE|FALSE)\b/,namespace:/\b(?:PROPERTIES|SHARED|PRIVATE|STATIC|PUBLIC|INTERFACE|TARGET_OBJECTS)\b/,operator:/\b(?:NOT|AND|OR|MATCHES|LESS|GREATER|EQUAL|STRLESS|STRGREATER|STREQUAL|VERSION_LESS|VERSION_EQUAL|VERSION_GREATER|DEFINED)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:"class-name"},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/},!function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:t}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(n),n.languages.csp={directive:{pattern:/(^|[^-\da-z])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[^-\da-z]|$)/i,lookbehind:!0,alias:"keyword"},safe:{pattern:/'(?:deny|none|report-sample|self|strict-dynamic|top-only|(?:nonce|sha(?:256|384|512))-[-+/\w=]+)'/i,alias:"selector"},unsafe:{pattern:/(?:'unsafe-(?:allow-redirects|dynamic|eval|hash-attributes|hashed-attributes|hashes|inline)'|\*)/i,alias:"function"}},!function(e){t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp(`\\[(?:[^[\\]"']|`+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=n,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var t,n,s={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:s,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:s,number:o})}(n),!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var o=t[n],s=[];/^\w+$/.test(n)||s.push(/\w+/.exec(n)[0]),"diff"===n&&s.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+o+`].*(?:\r 11 - ?| 12 - |(?![\\s\\S])))+`,"m"),alias:s,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(n),!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,s,o,i){if(n.language===s){var a=n.tokenStack=[];n.code=n.code.replace(o,function(e){if("function"==typeof i&&!i(e))return e;for(var r,o=a.length;-1!==n.code.indexOf(r=t(s,o));)++o;return a[o]=e,r}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,s){if(n.language===s&&n.tokenStack){n.grammar=e.languages[s];var o=0,i=Object.keys(n.tokenStack);!function a(r){for(d=0;d<r.length&&!(o>=i.length);d++)if(c=r[d],"string"==typeof c||c.content&&"string"==typeof c.content){{var c,d,m=i[o],f=n.tokenStack[m],u="string"==typeof c?c:c.content,p=t(s,m),h=u.indexOf(p);if(-1<h){++o;var g=u.substring(0,h),b=new e.Token(s,e.tokenize(f,n.grammar),"language-"+s,f),v=u.substring(h+p.length),l=[];g&&l.push.apply(l,a([g])),l.push(b),v&&l.push.apply(l,a([v])),"string"==typeof c?r.splice.apply(r,[d,1].concat(l)):c.content=l}}}else c.content&&a(c.content);return r}(n.tokens)}}}})}(n),!function(e){e.languages.django={comment:/^\{#[\s\S]*?#\}$/,tag:{pattern:/(^\{%[+-]?\s*)\w+/,lookbehind:!0,alias:"keyword"},delimiter:{pattern:/^\{[{%][+-]?|[+-]?[}%]\}$/,alias:"punctuation"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},filter:{pattern:/(\|)\w+/,lookbehind:!0,alias:"function"},test:{pattern:/(\bis\s+(?:not\s+)?)(?!not\b)\w+/,lookbehind:!0,alias:"function"},function:/\b[a-z_]\w+(?=\s*\()/i,keyword:/\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\b/,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,number:/\b\d+(?:\.\d+)?\b/,boolean:/[Tt]rue|[Ff]alse|[Nn]one/,variable:/\b\w+?\b/,punctuation:/[{}[\](),.:;]/};var n=/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}|\{#[\s\S]*?#\}/g,t=e.languages["markup-templating"];e.hooks.add("before-tokenize",function(e){t.buildPlaceholders(e,"django",n)}),e.hooks.add("after-tokenize",function(e){t.tokenizePlaceholders(e,"django")}),e.languages.jinja2=e.languages.django,e.hooks.add("before-tokenize",function(e){t.buildPlaceholders(e,"jinja2",n)}),e.hooks.add("after-tokenize",function(e){t.tokenizePlaceholders(e,"jinja2")})}(n),!function(e){var i="(?:[ ]+(?![ ])(?:<SP_BS>)?|<SP_BS>)".replace(/<SP_BS>/g,function(){return`\\\\[\r 13 - ](?:\\s|\\\\[\r 14 - ]|#.*(?!.))*(?![\\s#]|\\\\[\r 15 - ])`}),n=`"(?:[^"\\\\\r 16 - ]|\\\\(?:\r 17 - |[^]))*"|'(?:[^'\\\\\r 18 - ]|\\\\(?:\r 19 - |[^]))*'`,a=`--[\\w-]+=(?:<STR>|(?!["'])(?:[^\\s\\\\]|\\\\.)+)`.replace(/<STR>/g,function(){return n}),s={pattern:RegExp(n),greedy:!0},o={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function t(e,t){return e=e.replace(/<OPT>/g,function(){return a}).replace(/<SP>/g,function(){return i}),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:t("(^(?:ONBUILD<SP>)?\\w+<SP>)<OPT>(?:<SP><OPT>)*","i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[s,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:t("(^(?:ONBUILD<SP>)?HEALTHCHECK<SP>(?:<OPT><SP>)*)(?:CMD|NONE)\\b","i"),lookbehind:!0,greedy:!0},{pattern:t("(^(?:ONBUILD<SP>)?FROM<SP>(?:<OPT><SP>)*(?!--)[^ \\\\]+<SP>)AS","i"),lookbehind:!0,greedy:!0},{pattern:t("(^ONBUILD<SP>)\\w+","i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:o,string:s,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:o},e.languages.dockerfile=e.languages.docker}(n),n.languages.elixir={doc:{pattern:/@(?:doc|moduledoc)\s+(?:("""|''')[\s\S]*?\1|("|')(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2)/,inside:{attribute:/^@\w+/,string:/['"][\s\S]+/}},comment:{pattern:/#.*/m,greedy:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|#(?!\{)|[^#\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},module:{pattern:/\b[A-Z]\w*\b/,alias:"class-name"},"attr-name":/\b\w+\??:(?!:)/,argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},function:/\b[_a-zA-Z]\w*[?!]?(?:(?=\s*(?:\.\s*)?\()|(?=\/\d))/,number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%[\]{}()]/},n.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:n.languages.elixir}}}}),n.languages.elm={comment:/--.*|\{-[\s\S]*?-\}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/},n.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\b\d+#[a-z0-9]+/i,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=/<>:]=|=[:/]=|\+\+?|--?|[=*/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/},n.languages.fsharp=n.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*(?!\))[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?|'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,number:[/\b0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b0b[01]+(?:y|uy)?\b/,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|u[lsy]?|UL)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|<?\|{1,3}>?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),n.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(^#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}),n.languages.insertBefore("fsharp","punctuation",{"computation-expression":{pattern:/\b[_a-z]\w*(?=\s*\{)/i,alias:"keyword"}}),n.languages.insertBefore("fsharp","string",{annotation:{pattern:/\[<.+?>\]/,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:n.languages.fsharp}}}}),!function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(n),n.languages.git={comment:/^#.*/m,deleted:/^[-โ€“].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},n.languages.go=n.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete n.languages.go["class-name"],n.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:n.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/[A-Z]\w*Input(?=!?.*$)/m,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}[\]:=,]/,property:/\w+/},n.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var o,i,a,r,c,l,d,n=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),t=0;t<n.length;)if(d=n[t++],"keyword"===d.type&&"mutation"===d.content){if(o=[],h(["definition-mutation","punctuation"])&&"("===s(1).content){if(t+=2,i=m(/^\($/,/^\)$/),-1===i)continue;for(;t<i;t++)a=s(0),"variable"===a.type&&(u(a,"variable-input"),o.push(a.content));t=i+1}if(h(["punctuation","property-query"])&&"{"===s(0).content&&(t++,u(s(0),"property-mutation"),0<o.length)){if(l=m(/^\{$/,/^\}$/),-1===l)continue;for(r=t;r<l;r++)c=n[r],"variable"===c.type&&0<=o.indexOf(c.content)&&u(c,"variable-input")}}function s(e){return n[t+e]}function h(e,t){t=t||0;for(var o,n=0;n<e.length;n++)if(o=s(n+t),!o||o.type!==e[n])return!1;return!0}function m(e,s){for(var i,a,r=1,o=t;o<n.length;o++)if(a=n[o],i=a.content,"punctuation"===a.type&&"string"==typeof i)if(e.test(i))r++;else if(s.test(i)&&0===--r)return o;return-1}function u(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}}),!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp("%r(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp("%[qQiIwWxs]?(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")"),greedy:!0,inside:{interpolation:t}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:t}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(n),!function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ].+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ].*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ].+)/,lookbehind:!0,inside:e.languages.ruby},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ].*\|[\t ]*)*/,lookbehind:!0,inside:e.languages.ruby}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^{}])+\}|\[[^\]]+\])*[/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^{}])+\}/,lookbehind:!0,inside:e.languages.ruby},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:e.languages.ruby}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:e.languages.ruby},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t,s=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],o={},n=0,i=s.length;n<i;n++)t=s[n],t="string"==typeof t?{filter:t,language:t}:t,e.languages[t.language]&&(o["filter-"+t.filter]={pattern:RegExp(`((?:^|\\r?\\n|\\r)([\\t ]*)):{{filter_name}}(?:(?:\\r?\\n|\\r)(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+`.replace("{{filter_name}}",function(){return t.filter})),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[t.language]}});e.languages.insertBefore("haml","filter",o)}(n),!function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#/]\S+?(?=\s*(?:~\s*)?$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,./;<=>@[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,/;<=>@[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}),e.languages.hbs=e.languages.handlebars}(n),n.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\/][-!#$%*+=?&@|~.:<>^\\/]*|\.[-!#$%*+=?&@|~.:<>^\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},n.languages.hs=n.languages.haskell,!function(e){e.languages.http={"request-line":{pattern:/^(?:GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH|PRI|SEARCH)\s(?:https?:\/\/|\/)\S*\sHTTP\/[0-9.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:e.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[0-9.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[0-9.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[0-9.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var n,s,i,a,r,t=e.languages,o={"application/javascript":t.javascript,"application/json":t.json||t.javascript,"application/xml":t.xml,"text/xml":t.xml,"text/html":t.html,"text/css":t.css},c={"application/json":!0,"application/xml":!0};for(n in o)o[n]&&(s=s||{},r=c[n]?(0[0],a=(i=n).replace(/^[a-z]+\//,""),"(?:"+i+"|\\w+/(?:[\\w.-]+\\+)+"+a+"(?![+\\w.-]))"):n,s[n.replace(/\//g,"-")]={pattern:RegExp("(content-type:\\s*"+r+`(?:(?:\\r\\n?|\\n).+)*)(?:\\r?\\n|\\r){2}[\\s\\S]*`,"i"),lookbehind:!0,inside:o[n]});s&&e.languages.insertBefore("http","header-name",s)}(n),!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,s="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",n={pattern:RegExp(s+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{"class-name":[n,{pattern:RegExp(s+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:n.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":n,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(/<keyword>/g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(n),n.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},n.languages.webmanifest=n.languages.json,!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}});var t=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:t},e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(n),!function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/},e.languages.tex=e.languages.latex,e.languages.context=e.languages.latex}(n),n.languages.less=n.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*/]/}),n.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),n.languages.llvm={comment:/;.*/,string:{pattern:/"[^"]*"/,greedy:!0},boolean:/\b(?:true|false)\b/,variable:/[%@!#](?:(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+|\d+)/i,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,type:{pattern:/\b(?:double|float|fp128|half|i[1-9]\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\b/,alias:"class-name"},keyword:/\b[a-z_][a-z_0-9]*\b/,number:/[+-]?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-Fa-f]+\b|\b0xK[\dA-Fa-f]{20}\b|\b0x[ML][\dA-Fa-f]{32}\b|\b0xH[\dA-Fa-f]{4}\b/,punctuation:/[{}[\];(),.!*=<>]/},n.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},!function(e){function n(e){return e=e.replace(/<inner>/g,function(){return`(?:\\\\.|[^\\\\ 20 - \r]|(?: 21 - |\r 22 - ?)(?![\r 23 - ]))`}),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+e+")")}var s="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",t=`\\|?__(?:\\|__)+\\|?(?:(?: 24 - |\r 25 - ?)|(?![^]))`.replace(/__/g,function(){return s}),o=`\\|?[ ]*:?-{3,}:?[ ]*(?:\\|[ ]*:?-{3,}:?[ ]*)+\\|?(?: 26 - |\r 27 - ?)`;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+t+o+"(?:"+t+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+t+o+")(?:"+t+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(s),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+t+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+t+"$"),inside:{"table-header":{pattern:RegExp(s),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[[\]!:]|[<>]/},alias:"url"},bold:{pattern:n("\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n("\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n("(~~?)(?:(?!~)<inner>)+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n('!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[ ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ ]?\\[(?:(?!\\])<inner>)+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||!function e(t){if(t&&"string"!=typeof t)for(var n,s,o,i,r,a=0,c=t.length;a<c;a++)s=t[a],"code"===s.type?(o=s.content[1],n=s.content[3],o&&n&&"code-language"===o.type&&"code-block"===n.type&&"string"==typeof o.content&&(r=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),i="language-"+(r=(/[a-z][\w-]*/i.exec(r)||[""])[0].toLowerCase()),n.alias?"string"==typeof n.alias?n.alias=[n.alias,i]:n.alias.push(i):n.alias=[i])):e(s.content)}(e.tokens)}),e.hooks.add("wrap",function(t){if("code-block"===t.type){for(var o,c,l,d,n="",s=0,u=t.classes.length;s<u;s++)if(d=t.classes[s],o=/language-(.+)/.exec(d),o){n=o[1];break}c=e.languages[n],c?t.content=e.highlight(function(e){var t=e.replace(i,"");return t=t.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(e,t){if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),r(n);var n,s=a[t];return s||e})}(t.content),c,n):n&&"none"!==n&&e.plugins.autoloader&&(l="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=l,e.plugins.autoloader.loadLanguages(n,function(){var t=document.getElementById(l);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}});var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),a={amp:"&",lt:"<",gt:">",quot:'"'},r=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(n),n.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|(?=\$))(?:0[hx](?:\.[\da-f]+|[\da-f]+(?:\.[\da-f]+)?)(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|(?:\d+(?:\.\d+)?|\.\d+)(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[[\]*+\-/%<>=&|$!]/},n.languages.objectivec=n.languages.extend("c",{string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*/@]/}),delete n.languages.objectivec["class-name"],n.languages.objc=n.languages.objectivec,n.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*/$%!?~][!$%&*+\-./:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}[\]|.,:;]|\b_\b/},n.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{([<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{([<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{([<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub \w+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/},!function(e){var t,n,s=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,o=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,a=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,r=/[{}[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:s,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:a,punctuation:r},t={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},n=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:t}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:t}}],e.languages.insertBefore("php","variable",{string:n,attribute:{pattern:/#\[(?:[^"'/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:s,string:n,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,number:i,operator:a,punctuation:r}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",function(t){/<\?/.test(t.code)&&e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")})}(n),n.languages.insertBefore("php","variable",{this:/\$this\b/,global:/\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/static|self|parent/,punctuation:/::|\\/}}}),!function(){var t=n.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^[\]])*\]|[^[\]])*\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},s=t.string[0].inside;s.boolean=t.boolean,s.variable=t.variable,s.function.inside=t}(),n.languages.processing=n.languages.extend("clike",{keyword:/\b(?:break|catch|case|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*/]=?/}),n.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|[A-Z]\w*)\b/,alias:"variable"}}),n.languages.processing.function=/\b\w+(?=\s*\()/,n.languages.processing["class-name"].alias="variable",!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ].+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:e.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]).+/m,lookbehind:!0,inside:e.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:e.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*(?!\s))(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:e.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/,"attr-id":/#[\w-]+/,"attr-class":/\.[\w-]+/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:e.languages.javascript}],punctuation:/[.\-!=|]+/};for(var t,s=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","less","livescript","markdown",{filter:"sass",language:"scss"},"stylus"],o={},n=0,i=s.length;n<i;n++)t=s[n],t="string"==typeof t?{filter:t,language:t}:t,e.languages[t.language]&&(o["filter-"+t.filter]={pattern:RegExp(`(^([ ]*)):<filter_name>(?:(?:\r? 28 - |\r(?! 29 - ))(?:\\2[ ].+|\\s*?(?=\r? 30 - |\r)))+`.replace("<filter_name>",function(){return t.filter}),"m"),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[t.language]}});e.languages.insertBefore("pug","filter",o)}(n),n.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},n.languages.python["string-interpolation"].inside.interpolation.inside.rest=n.languages.python,n.languages.py=n.languages.python,n.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+(?:\.\d*)?|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\|\|?|[+*/^$@~]/,punctuation:/[(){}[\],;]/},!function(e){var t,o,i=e.util.clone(e.languages.javascript),s="(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})";function n(e,t){return e=e.replace(/<S>/g,function(){return"(?:\\s|//.*(?!.)|/\\*(?:[^*]|\\*(?!/))\\*/)"}).replace(/<BRACES>/g,function(){return"(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})"}).replace(/<SPREAD>/g,function(){return s}),RegExp(e,t)}s=n(s).source,e.languages.jsx=e.languages.extend("markup",i),e.languages.jsx.tag.pattern=n(`</?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:"(?:\\\\[^]|[^\\\\"])*"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>`),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=i.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:n("<SPREAD>"),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:n("=<BRACES>"),inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag),t=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(t).join(""):""},o=function(n){for(var s,r,c,i=[],a=0;a<n.length;a++)s=n[a],c=!1,("string"!=typeof s&&("tag"===s.type&&s.content[0]&&"tag"===s.content[0].type?"</"===s.content[0].content[0].content?0<i.length&&i[i.length-1].tagName===t(s.content[0].content[1])&&i.pop():"/>"===s.content[s.content.length-1].content||i.push({tagName:t(s.content[0].content[1]),openedBraces:0}):0<i.length&&"punctuation"===s.type&&"{"===s.content?i[i.length-1].openedBraces++:0<i.length&&0<i[i.length-1].openedBraces&&"punctuation"===s.type&&"}"===s.content?i[i.length-1].openedBraces--:c=!0),(c||"string"==typeof s)&&0<i.length&&0===i[i.length-1].openedBraces)&&(r=t(s),a<n.length-1&&("string"==typeof n[a+1]||"plain-text"===n[a+1].type)&&(r+=t(n[a+1]),n.splice(a+1,1)),0<a&&("string"==typeof n[a-1]||"plain-text"===n[a-1].type)&&(r=t(n[a-1])+r,n.splice(a-1,1),a--),n[a]=new e.Token("plain-text",r,null,r)),s.content&&"string"!=typeof s.content&&o(s.content)},e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||o(e.tokens)})}(n),!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[{*]|$))/),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(n),!function(e){var t,n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),t=e.languages.tsx.tag,t.pattern=RegExp("(^|[^\\w$]|(?=</))(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(n),n.languages.reason=n.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),n.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete n.languages.reason.function,!function(e){for(var t="/\\*(?:[^*/]|\\*(?!/)|/(?!\\*)|<self>)*\\*/",n=0;n<2;n++)t=t.replace(/<self>/g,function(){return t});t=t.replace(/<self>/g,function(){return"[^\\s\\S]"}),e.languages.rust={comment:[{pattern:RegExp("(^|[^\\\\])"+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0,alias:"string"},attribute:{pattern:/#!?\[(?:[^[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|Self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:[ui](?:8|16|32|64|128|size)|f(?:32|64)|bool|char|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64|size)?|f32|f64))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(n),!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(n),n.languages.scss=n.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),n.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),n.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),n.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),n.languages.scss.atrule.inside.rest=n.languages.scss,n.languages.scala=n.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,symbol:/'[^\d\s\\]\w*/}),delete n.languages.scala["class-name"],delete n.languages.scala.function,n.languages.scheme={comment:/;.*|#;\s*(?:\((?:[^()]|\([^()]*\))*\)|\[(?:[^[\]]|\[[^[\]]*\])*\])|#\|(?:[^#|]|#(?!\|)|\|(?!#)|#\|(?:[^#|]|#(?!\|)|\|(?!#))*\|#)*\|#/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()[\]#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+\b|[-a-zA-Z]+\b|[\uD800-\uDBFF][\uDC00-\uDFFF]|\S)/,greedy:!0,alias:"string"},"lambda-parameter":[{pattern:/((?:^|[^'`#])[([]lambda\s+)(?:[^|()[\]'\s]+|\|(?:[^\\|]|\\.)*\|)/,lookbehind:!0},{pattern:/((?:^|[^'`#])[([]lambda\s+[([])[^()[\]']+/,lookbehind:!0}],keyword:{pattern:/((?:^|[^'`#])[([])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|export|except|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\*)?|let\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()[\]\s]|$)/,lookbehind:!0},builtin:{pattern:/((?:^|[^'`#])[([])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\?|boolean=?\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\?|\?|<\?|<=\?|=\?|>\?|>=\?)|close-(?:input-port|output-port|port)|complex\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\??|eq\?|equal\?|eqv\?|error|error-object(?:-irritants|-message|\?)|eval|even\?|exact(?:-integer-sqrt|-integer\?|\?)?|expt|features|file-error\?|floor(?:-quotient|-remainder|\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\??|input-port(?:-open\?|\?)|integer(?:->char|\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\?|newline|not|null\?|number(?:->string|\?)|numerator|odd\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\?|\?)|pair\?|peek-char|peek-u8|port\?|positive\?|procedure\?|quotient|raise|raise-continuable|rational\?|rationalize|read-(?:bytevector|bytevector!|char|error\?|line|string|u8)|real\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?|<\?|<=\?|=\?|>\?|>=\?)?|substring|symbol(?:->string|\?|=\?)|syntax-error|textual-port\?|truncate(?:-quotient|-remainder|\/)?|u8-ready\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\?)(?=[()[\]\s]|$)/,lookbehind:!0},operator:{pattern:/((?:^|[^'`#])[([])(?:[-+*%/]|[<>]=?|=>?)(?=[()\[\]\s]|$)/,lookbehind:!0},number:{pattern:RegExp(function(e){for(var t in e)e[t]=e[t].replace(/<[\w\s]+>/g,function(t){return"(?:"+e[t].trim()+")"});return e[t]}({"<ureal dec>":"\\d+(?:/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?","<real dec>":"[+-]?<ureal dec>|[+-](?:inf|nan)\\.0","<imaginary dec>":"[+-](?:<ureal dec>|(?:inf|nan)\\.0)?i","<complex dec>":"<real dec>(?:@<real dec>|<imaginary dec>)?|<imaginary dec>","<num dec>":"(?:#d(?:#[ei])?|#[ei](?:#d)?)?<complex dec>","<ureal box>":"[0-9a-f]+(?:/[0-9a-f]+)?","<real box>":"[+-]?<ureal box>|[+-](?:inf|nan)\\.0","<imaginary box>":"[+-](?:<ureal box>|(?:inf|nan)\\.0)?i","<complex box>":"<real box>(?:@<real box>|<imaginary box>)?|<imaginary box>","<num box>":"#[box](?:#[ei])?|(?:#[ei])?#[box]<complex box>","<number>":"(^|[()\\[\\]\\s])(?:<num dec>|<num box>)(?=[()\\[\\]\\s]|$)"}),"i"),lookbehind:!0},boolean:{pattern:/(^|[()[\]\s])#(?:[ft]|false|true)(?=[()[\]\s]|$)/,lookbehind:!0},function:{pattern:/((?:^|[^'`#])[([])(?:[^|()[\]'\s]+|\|(?:[^\\|]|\\.)*\|)(?=[()[\]\s]|$)/,lookbehind:!0},identifier:{pattern:/(^|[()[\]\s])\|(?:[^\\|]|\\.)*\|(?=[()[\]\s]|$)/,lookbehind:!0,greedy:!0},punctuation:/[()[\]']/},n.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},!function(e){var n={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},s={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},t={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:n,number:s,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:n,boolean:/\b(?:true|false)\b/,operator:[/~|[+!/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:s,punctuation:/[{}()[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:t.interpolation,comment:t.comment,punctuation:/[{},]/}},func:t.func,string:t.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:t.interpolation,punctuation:/[{}()[\];:.]/}}(n),n.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(`(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r 31 - |[^(])|[^\\\\\r 32 - "])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(`(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r 33 - |[^#])|[^\\\\\r 34 - ])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ ]*(?:![ ]*)?(?:\\b\\w+\\b(?:[ ]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ ]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:true|false)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:true|false)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},n.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=n.languages.swift}),!function(e){function t(e,t){return RegExp(e.replace(/<MOD>/g,function(){return`(?:\\([^|() 35 - ]+\\)|\\[[^\\] 36 - ]+\\]|\\{[^} 37 - ]+\\})`}).replace(/<PAR>/g,function(){return`(?:\\)|\\((?![^|() 38 - ]+\\)))`}),t||"")}var o,a,i={css:{pattern:/\{[^{}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^()]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^[\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\/]\d+|\S/},r=e.languages.textile=e.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:t("^[a-z]\\w*(?:<MOD>|<PAR>|[<>=])*\\."),inside:{modifier:{pattern:t("(^[a-z]\\w*)(?:<MOD>|<PAR>|[<>=])+(?=\\.)"),lookbehind:!0,inside:i},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:t("^[*#]+<MOD>*\\s+\\S.*","m"),inside:{modifier:{pattern:t("(^[*#]+)<MOD>+"),lookbehind:!0,inside:i},punctuation:/^[*#]+/}},table:{pattern:t("^(?:(?:<MOD>|<PAR>|[<>=^~])+\\.\\s*)?(?:\\|(?:(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|","m"),inside:{modifier:{pattern:t(`(^|\\|(?:\r? 39 - |\r)?)(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+(?=\\.)`),lookbehind:!0,inside:i},punctuation:/\||^\./}},inline:{pattern:t("(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>*.+?\\2(?![a-zA-Z\\d])"),lookbehind:!0,inside:{bold:{pattern:t("(^(\\*\\*?)<MOD>*).+?(?=\\2)"),lookbehind:!0},italic:{pattern:t("(^(__?)<MOD>*).+?(?=\\2)"),lookbehind:!0},cite:{pattern:t("(^\\?\\?<MOD>*).+?(?=\\?\\?)"),lookbehind:!0,alias:"string"},code:{pattern:t("(^@<MOD>*).+?(?=@)"),lookbehind:!0,alias:"keyword"},inserted:{pattern:t("(^\\+<MOD>*).+?(?=\\+)"),lookbehind:!0},deleted:{pattern:t("(^-<MOD>*).+?(?=-)"),lookbehind:!0},span:{pattern:t("(^%<MOD>*).+?(?=%)"),lookbehind:!0},modifier:{pattern:t("(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>+"),lookbehind:!0,inside:i},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(^\])\S+$/,lookbehind:!0},punctuation:/[[\]]/}},link:{pattern:t('"<MOD>*[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),inside:{text:{pattern:t('(^"<MOD>*)[^"]+(?=")'),lookbehind:!0},modifier:{pattern:t('(^")<MOD>+'),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:t("!(?:<MOD>|<PAR>|[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?"),inside:{source:{pattern:t("(^!(?:<MOD>|<PAR>|[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)"),lookbehind:!0,alias:"url"},modifier:{pattern:t("(^!)(?:<MOD>|<PAR>|[<>=])+"),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^()]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:TM|R|C)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}}),s=r.phrase.inside,n={inline:s.inline,link:s.link,image:s.image,footnote:s.footnote,acronym:s.acronym,mark:s.mark};r.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,a=s.inline.inside,a.bold.inside=n,a.italic.inside=n,a.inserted.inside=n,a.deleted.inside=n,a.span.inside=n,o=s.table.inside,o.inline=n.inline,o.link=n.link,o.image=n.image,o.footnote=n.footnote,o.acronym=n.acronym,o.mark=n.mark}(n),!function(e){function t(e){return e.replace(/__/g,function(){return`(?:[\\w-]+|'[^' 40 - \r]*'|"(?:\\\\.|[^\\\\"\r 41 - ])*")`})}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(t("(^[ ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])"),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(t("(^[ ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)"),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:true|false)\b/,punctuation:/[.,=[\]{}]/}}(n),n.languages.twig={comment:/\{#[\s\S]*?#\}/,tag:{pattern:/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}/,inside:{ld:{pattern:/^(?:\{\{-?|\{%-?\s*\w+)/,inside:{punctuation:/^(?:\{\{|\{%)-?/,keyword:/\w+/}},rd:{pattern:/-?(?:%\}|\}\})$/,inside:{punctuation:/.+/}},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:true|false|null)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-xor|b-or|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],property:/\b[a-zA-Z_]\w*\b/,punctuation:/[()[\]{}:.,]/}},other:{pattern:/\S(?:[\s\S]*\S)?/,inside:n.languages.markup}},n.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\b\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/},n.languages["visual-basic"]={comment:{pattern:/(?:['โ€˜โ€™]|REM\b)(?:[^\r\n_]|_(?:\r\n?|\n)?)*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:[^\S\r\n]_[^\S\r\n]*(?:\r\n?|\n)|.)+/i,alias:"comment",greedy:!0},string:{pattern:/\$?["โ€œโ€](?:["โ€œโ€]{2}|[^"โ€œโ€])*["โ€œโ€]C?/i,greedy:!0},date:{pattern:/#[^\S\r\n]*(?:\d+([/-])\d+\1\d+(?:[^\S\r\n]+(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))?|\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?)[^\S\r\n]*#/i,alias:"builtin"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:U?[ILS]|[FRD])?/i,boolean:/\b(?:True|False|Nothing)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Until|Xor)\b/i,operator:[/[+\-*/\\^<=>&#@$%!]/,{pattern:/([^\S\r\n])_(?=[^\S\r\n]*[\r\n])/,lookbehind:!0}],punctuation:/[{}().,:?]/},n.languages.vb=n.languages["visual-basic"],n.languages.vba=n.languages["visual-basic"],n.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},!function(e){var n=/[*&][^\s[\]{},]+/,s=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,o="(?:"+s.source+"(?:[ ]+"+n.source+")?|"+n.source+"(?:[ ]+"+s.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ ]*(?:(?![#:])<PLAIN>|:<PLAIN>))*".replace(/<PLAIN>/g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),i=`"(?:[^"\\\\\r 42 - ]|\\\\.)*"|'(?:[^'\\\\\r 43 - ]|\\\\.)*'`;function t(e,t){t=(t||"").replace(/m/g,"")+"m";var n=`([:\\-,[{]\\s*(?:\\s<<prop>>[ ]+)?)(?:<<value>>)(?=[ ]*(?:$|,|\\]|\\}|(?:[\r 44 - ]\\s*)?#))`.replace(/<<prop>>/g,function(){return o}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(`([\\-:]\\s*(?:\\s<<prop>>[ ]+)?[|>])[ ]*(?:((?:\r? 45 - |\r)[ ]+)\\S[^\r 46 - ]*(?:\\2[^\r 47 - ]+)*)`.replace(/<<prop>>/g,function(){return o})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(`((?:^|[:\\-,[{\r 48 - ?])[ ]*(?:<<prop>>[ ]+)?)<<key>>(?=\\s*:\\s)`.replace(/<<prop>>/g,function(){return o}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+i+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:t("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ ]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ ]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:t("true|false","i"),lookbehind:!0,alias:"important"},null:{pattern:t("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:t(i),lookbehind:!0,greedy:!0},number:{pattern:t("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:s,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(n),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document&&document.querySelector){var s,r="line-numbers",e="linkable-line-numbers",h=function(){if(0[0]===s){var e=document.createElement("div");e.style.fontSize="13px",e.style.lineHeight="1.5",e.style.padding="0",e.style.border="0",e.innerHTML="&nbsp;<br />&nbsp;",document.body.appendChild(e),s=38===e.offsetHeight,document.body.removeChild(e)}return s},o=!0,c=0;n.hooks.add("before-sanity-check",function(e){var n,s=e.element.parentElement;i(s)&&(n=0,t(".line-highlight",s).forEach(function(e){n+=e.textContent.length,e.parentNode.removeChild(e)}),n&&/^(?: \n)+$/.test(e.code.slice(-n))&&(e.code=e.code.slice(0,-n)))}),n.hooks.add("complete",function e(t){if(s=t.element.parentElement,i(s)){clearTimeout(c);var s,o=n.plugins.lineNumbers,d=t.plugins&&t.plugins.lineNumbers;l(s,r)&&o&&!d?n.hooks.add("line-numbers",e):(a(s)(),c=setTimeout(u,1))}}),window.addEventListener("hashchange",u),window.addEventListener("resize",function(){t("pre").filter(i).map(function(e){return a(e)}).forEach(d)})}function t(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function l(e,t){return e.classList.contains(t)}function d(e){e()}function i(t){return!!t&&!!/pre/i.test(t.nodeName)&&(!!t.hasAttribute("data-line")||!!t.id&&!!n.util.isActive(t,e))}function a(s,i,a){var f,v,b=(i="string"==typeof i?i:s.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),j=+s.getAttribute("data-line-offset")||0,y=(h()?parseInt:parseFloat)(getComputedStyle(s).lineHeight),m=n.util.isActive(s,r),u=s.querySelector("code"),p=m?s:u||s,c=[],g=u&&p!=u?function(e,t){var o=getComputedStyle(e),s=getComputedStyle(t);function n(e){return+e.substr(0,e.length-2)}return t.offsetTop+n(s.borderTopWidth)+n(s.paddingTop)-n(o.paddingTop)}(s,u):0;return b.forEach(function(e){var r,l,u,h,d=e.split("-"),o=+d[0],i=+d[1]||o,t=s.querySelector('.line-highlight[data-range="'+e+'"]')||document.createElement("div");c.push(function(){t.setAttribute("aria-hidden","true"),t.setAttribute("data-range",e),t.className=(a||"")+" line-highlight"}),m&&n.plugins.lineNumbers?(r=n.plugins.lineNumbers.getLine(s,o),l=n.plugins.lineNumbers.getLine(s,i),r&&(u=r.offsetTop+g+"px",c.push(function(){t.style.top=u})),l&&(h=l.offsetTop-r.offsetTop+l.offsetHeight+"px",c.push(function(){t.style.height=h}))):c.push(function(){t.setAttribute("data-start",String(o)),o<i&&t.setAttribute("data-end",String(i)),t.style.top=(o-j-1)*y+g+"px",t.textContent=new Array(i-o+2).join(` 49 - `)}),c.push(function(){t.style.width=s.scrollWidth+"px"}),c.push(function(){p.appendChild(t)})}),f=s.id,m&&n.util.isActive(s,e)&&f&&(l(s,e)||c.push(function(){s.classList.add(e)}),v=parseInt(s.getAttribute("data-start")||"1"),t(".line-numbers-rows > span",s).forEach(function(e,t){var n=t+v;e.onclick=function(){var e=f+"."+n;o=!1,location.hash=e,setTimeout(function(){o=!0},1)}})),function(){c.forEach(d)}}function u(){if(e=location.hash.slice(1),t(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)}),s=(e.match(/\.([\d,-]+)$/)||[,""])[1],s&&!document.getElementById(e)){var e,s,i=e.slice(0,e.lastIndexOf(".")),n=document.getElementById(i);n&&(n.hasAttribute("data-line")||n.setAttribute("data-line",""),a(n,s,"temporary ")(),o&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}}(),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document){var e="line-numbers",s=/\n(?!$)/g,i=n.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)&&(s=t.querySelector(".line-numbers-rows"),s)){var s,a,o=parseInt(t.getAttribute("data-start"),10)||1,i=o+(s.children.length-1);return n<o&&(n=o),i<n&&(n=i),a=n-o,s.children[a]}},resize:function(e){t([e])},assumeViewportIndependence:!0},o=0[0];window.addEventListener("resize",function(){i.assumeViewportIndependence&&o===window.innerWidth||(o=window.innerWidth,t(Array.prototype.slice.call(document.querySelectorAll("pre."+e))))}),n.hooks.add("complete",function(o){if(o.code&&(a=o.element,i=a.parentNode,i&&/pre/i.test(i.nodeName)&&!a.querySelector(".line-numbers-rows")&&n.util.isActive(a,e))){a.classList.remove(e),i.classList.add(e);var i,a,r,c=o.code.match(s),l=c?c.length+1:1,d=new Array(l+1).join("<span></span>");(r=document.createElement("span")).setAttribute("aria-hidden","true"),r.className="line-numbers-rows",r.innerHTML=d,i.hasAttribute("data-start")&&(i.style.counterReset="linenumber "+(parseInt(i.getAttribute("data-start"),10)-1)),o.element.appendChild(r),t([i]),n.hooks.run("line-numbers",o)}}),n.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function t(e){if(0!=(e=e.filter(function(e){var t=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===t||"pre-line"===t})).length){var t=e.map(function(e){var t,o,i,n=e.querySelector("code"),a=e.querySelector(".line-numbers-rows");if(n&&a)return t=e.querySelector(".line-numbers-sizer"),o=n.textContent.split(s),t||((t=document.createElement("span")).className="line-numbers-sizer",n.appendChild(t)),t.innerHTML="0",t.style.display="block",i=t.getBoundingClientRect().height,t.innerHTML="",{element:e,lines:o,lineHeights:[],oneLinerHeight:i,sizer:t}}).filter(Boolean);t.forEach(function(e){var s=e.sizer,t=e.lines,n=e.lineHeights,o=e.oneLinerHeight;n[t.length-1]=0[0],t.forEach(function(e,t){if(e&&1<e.length){var i=s.appendChild(document.createElement("span"));i.style.display="block",i.textContent=e}else n[t]=o})}),t.forEach(function(e){for(var s=e.sizer,n=e.lineHeights,o=0,t=0;t<n.length;t++)0[0]===n[t]&&(n[t]=s.children[o++].getBoundingClientRect().height)}),t.forEach(function(e){var t=e.sizer,n=e.element.querySelector(".line-numbers-rows");t.style.display="none",t.innerHTML="",e.lineHeights.forEach(function(e,t){n.children[t].style.height=e+"px"})})}}}(),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document){e=[],s(function(e){if(e&&e.meta&&e.data){if(e.meta.status&&400<=e.meta.status)return"Error: "+(e.data.message||e.meta.status);if("string"==typeof e.data.content)return"function"==typeof atob?atob(e.data.content.replace(/\s/g,"")):"Your browser cannot decode base64"}return null},"github"),s(function(e,t){if(e&&e.meta&&e.data&&e.data.files){if(e.meta.status&&400<=e.meta.status)return"Error: "+(e.data.message||e.meta.status);var o,s=e.data.files,n=t.getAttribute("data-filename");if(n==null)for(o in s)if(s.hasOwnProperty(o)){n=o;break}return 0[0]!==s[n]?s[n].content:"Error: unknown or missing gist file "+n}return null},"gist"),s(function(e){return e&&e.node&&"string"==typeof e.data?e.data:null},"bitbucket");var e,l=0,t="data-jsonp-status",r="loading",c="loaded",o="failed",i="pre[data-jsonp]:not(["+t+'="'+c+'"]):not(['+t+'="'+r+'"])';n.hooks.add("before-highlightall",function(e){e.selector+=", "+i}),n.hooks.add("before-sanity-check",function(s){if(a=s.element,a.matches(i)){s.code="",a.setAttribute(t,r),d=a.appendChild(document.createElement("CODE")),d.textContent="Loadingโ€ฆ",h=s.language,d.className="language-"+h,m=n.plugins.autoloader,m&&m.loadLanguages(h);var a,d,h,m,p,u=a.getAttribute("data-adapter"),f=null;if(u){if("function"!=typeof window[u])return a.setAttribute(t,o),void(d.textContent=function(e){return'โœ– Error: JSONP adapter function "'+e+`" doesn't exist`}(u));f=window[u]}p=a.getAttribute("data-jsonp"),!function(e,t,s,o){var i,d,r="prismjsonp"+l++,a=document.createElement("a");a.href=e,a.href+=(a.search?"&":"?")+(t||"callback")+"="+r,i=document.createElement("script"),i.src=a.href,i.onerror=function(){c(),o("network")},d=setTimeout(function(){c(),o("timeout")},n.plugins.jsonphighlight.timeout);function c(){clearTimeout(d),document.head.removeChild(i),delete window[r]}window[r]=function(e){c(),s(e)},document.head.appendChild(i)}(p,a.getAttribute("data-callback"),function(s){if(i=null,f)i=f(s,a);else for(var i,r=0,l=e.length;r<l&&null===(i=e[r].adapter(s,a));r++);null===i?(a.setAttribute(t,o),d.textContent="โœ– Error: Cannot parse response (perhaps you need an adapter function?)"):(a.setAttribute(t,c),d.textContent=i,n.highlightElement(d))},function(){a.setAttribute(t,o),d.textContent=function(e){return"โœ– Error: Timeout loading "+e}(p)})}}),n.plugins.jsonphighlight={timeout:5e3,registerAdapter:s,removeAdapter:function(t){if("string"==typeof t&&(t=a(t)),"function"==typeof t){var n=e.findIndex(function(e){return e.adapter===t});0<=n&&e.splice(n,1)}},highlight:function(e){for(var t,s=(e||document).querySelectorAll(i),o=0;t=s[o++];)n.highlightElement(t)}}}function s(t,n){n=n||t.name,"function"!=typeof t||a(t)||a(n)||e.push({adapter:t,name:n})}function a(t){if("function"==typeof t){for(var n,s=0;n=e[s++];)if(n.adapter.valueOf()===t.valueOf())return n.adapter}else if("string"==typeof t)for(s=0;n=e[s++];)if(n.name===t)return n.adapter;return null}}(),"undefined"!=typeof n&&n.hooks.add("wrap",function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)}),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document){var e=/(?:^|\s)command-line(?:\s|$)/,s="command-line-prompt",i="".startsWith?function(e,t){return e.startsWith(t)}:function(e,t){return 0===e.indexOf(t)};n.hooks.add("before-highlight",function(n){if(r=t(n),!r.complete&&n.code)if(c=n.element.parentElement,c&&/pre/i.test(c.nodeName)&&(e.test(c.className)||e.test(n.element.className))){l=n.element.querySelector("."+s),l&&l.remove(),o=n.code.split(` 50 - `),r.numberOfLines=o.length;var o,a,r,c,l,u=r.outputLines=[],h=c.getAttribute("data-output"),d=c.getAttribute("data-filter-output");if(null!==h)h.split(",").forEach(function(e){var t,i=e.split("-"),n=parseInt(i[0],10),s=2===i.length?parseInt(i[1],10):n;if(!isNaN(n)&&!isNaN(s)){n<1&&(n=1),s>o.length&&(s=o.length),s--;for(t=--n;t<=s;t++)u[t]=o[t],o[t]=""}});else if(d)for(a=0;a<o.length;a++)i(o[a],d)&&(u[a]=o[a].slice(d.length),o[a]="");n.code=o.join(` 51 - `)}else r.complete=!0;else r.complete=!0}),n.hooks.add("before-insert",function(e){if(s=t(e),!s.complete){for(var s,i=e.highlightedCode.split(` 52 - `),o=s.outputLines||[],n=0,a=o.length;n<a;n++)o.hasOwnProperty(n)&&(i[n]=o[n]);e.highlightedCode=i.join(` 53 - `)}}),n.hooks.add("complete",function(n){if(function(e){return"command-line"in(e.vars=e.vars||{})}(n)&&(i=t(n),!i.complete)){r=n.element.parentElement,e.test(n.element.className)&&(n.element.className=n.element.className.replace(e," ")),e.test(r.className)||(r.className+=" command-line"),u=i.numberOfLines||0,h=m("data-prompt",""),""!==h?d=o('<span data-prompt="'+h+'"></span>',u):d=o('<span data-user="'+m("data-user","user")+'" data-host="'+m("data-host","localhost")+'"></span>',u),a=document.createElement("span"),a.className=s,a.innerHTML=d;for(var i,a,r,l,d,u,h,f=i.outputLines||[],c=0,p=f.length;c<p;c++)f.hasOwnProperty(c)&&(l=a.children[c],l.removeAttribute("data-user"),l.removeAttribute("data-host"),l.removeAttribute("data-prompt"));n.element.insertBefore(a,n.element.firstChild),i.complete=!0}function m(e,t){return(r.getAttribute(e)||t).replace(/"/g,"&quot")}})}function o(e,t){for(var n="",s=0;s<t;s++)n+=e;return n}function t(e){var t=e.vars=e.vars||{};return t["command-line"]=t["command-line"]||{}}}(),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document){var s,o,t=[],e={},i=function(){};n.plugins.toolbar={},s=n.plugins.toolbar.registerButton=function(n,s){var o="function"==typeof s?s:function(e){var t;return"function"==typeof s.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",function(){s.onClick.call(this,e)})):"string"==typeof s.url?(t=document.createElement("a")).href=s.url:t=document.createElement("span"),s.className&&t.classList.add(s.className),t.textContent=s.text,t};n in e?console.warn('There is a button with the key "'+n+'" registered already.'):t.push(e[n]=o)},o=n.plugins.toolbar.hook=function(n){if(s=n.element.parentNode,s&&/pre/i.test(s.nodeName)&&!s.parentNode.classList.contains("code-toolbar")){o=document.createElement("div"),o.classList.add("code-toolbar"),s.parentNode.insertBefore(o,s),o.appendChild(s),a=document.createElement("div"),a.classList.add("toolbar");var s,o,a,r=t,c=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(t!=null)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(n.element);c&&(r=c.map(function(t){return e[t]||i})),r.forEach(function(e){var t,s=e(n);s&&(t=document.createElement("div"),t.classList.add("toolbar-item"),t.appendChild(s),a.appendChild(t))}),o.appendChild(a)}},s("label",function(e){var n,s,o,t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){o=t.getAttribute("data-label");try{s=document.querySelector("template#"+o)}catch{}return s?n=s.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=o),n}}),n.hooks.add("complete",o)}}(),!function(){function t(t,n){t.addEventListener("click",function(){!function(t){navigator.clipboard?navigator.clipboard.writeText(t.getText()).then(t.success,function(){e(t)}):e(t)}(n)})}function e(e){var n,t=document.createElement("textarea");t.value=e.getText(),t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{n=document.execCommand("copy"),setTimeout(function(){n?e.success():e.error()},1)}catch(t){setTimeout(function(){e.error(t)},1)}document.body.removeChild(t)}"undefined"!=typeof n&&"undefined"!=typeof document&&(n.plugins.toolbar?n.plugins.toolbar.registerButton("copy-to-clipboard",function(e){var i,o=e.element,a=function(e){n={copy:"Copy","copy-error":"Press Ctrl+C to copy","copy-success":"Copied!","copy-timeout":5e3};for(s in n){for(var n,s,o="data-prismjs-"+s,t=e;t&&!t.hasAttribute(o);)t=t.parentElement;t&&(n[s]=t.getAttribute(o))}return n}(o),n=document.createElement("button");return n.className="copy-to-clipboard-button",n.setAttribute("type","button"),i=document.createElement("span"),n.appendChild(i),s("copy"),t(n,{getText:function(){return o.textContent},success:function(){s("copy-success"),r()},error:function(){s("copy-error"),setTimeout(function(){!function(e){window.getSelection().selectAllChildren(e)}(o)},1),r()}}),n;function r(){setTimeout(function(){s("copy")},a["copy-timeout"])}function s(e){i.textContent=a[e],n.setAttribute("data-copy-state",e)}}):console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."))}()}});n()})()
···
-11
public/categories/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Categories on My New Hugo Site</title> 5 - <link>http://localhost:1313/categories/</link> 6 - <description>Recent content in Categories on My New Hugo Site</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>en-us</language> 9 - <atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" /> 10 - </channel> 11 - </rss>
···
+1
public/css/style.css
···
··· 1 + ๏ปฟ@font-face{font-family:"Fira Code";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/FiraCode-Regular.woff2") format("woff2")}@font-face{font-family:"Fira Code";font-style:normal;font-weight:800;font-display:swap;src:url("/fonts/FiraCode-Bold.woff2") format("woff2")}:root{--font-size: 1rem;--line-height: 1.54em;--radius: 0}@media (max-width: 684px){:root{--font-size: 0.95rem}}:root,[data-theme=terminus]{--background-color: #1d2021;--text-color: #fff;--accent-color: #8ec07c;--footnote-color: rgba(255, 255, 255, 0.5)}[data-theme=tokyo-night]{--background-color: #1a1b26;--text-color: #c0caf5;--accent-color: #7aa2f7;--footnote-color: rgba(192, 202, 245, 0.6)}[data-theme=solarized-dark]{--background-color: #002b36;--text-color: #839496;--accent-color: #268bd2;--footnote-color: rgba(131, 148, 150, 0.6)}[data-theme=nord]{--background-color: #2e3440;--text-color: #d8dee9;--accent-color: #5e81ac;--footnote-color: rgba(216, 222, 233, 0.6)}[data-theme=one-dark]{--background-color: #282c34;--text-color: #abb2bf;--accent-color: #61afef;--footnote-color: rgba(171, 178, 191, 0.6)}[data-theme=gruvbox-dark]{--background-color: #282828;--text-color: #ebdbb2;--accent-color: #fe8019;--footnote-color: rgba(235, 219, 178, 0.6)}[data-theme=oled-abyss]{--background-color: #000000;--text-color: #ffffff;--accent-color: #00d4ff;--footnote-color: rgba(255, 255, 255, 0.7)}[data-theme=solar-flare]{--background-color: #ffffff;--text-color: #1a1a1a;--accent-color: #ff4500;--footnote-color: rgba(26, 26, 26, 0.6)}html{box-sizing:border-box;accent-color:var(--accent-color);scrollbar-color:var(--accent-color) rgba(0,0,0,0)}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;font-family:"Fira Code",Monaco,Consolas,"Ubuntu Mono",monospace;font-size:var(--font-size);line-height:var(--line-height);background:var(--background-color);color:var(--text-color);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;text-size-adjust:100%;font-feature-settings:"liga"}body.layout-left,body.layout-center,body.layout-full-width{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid color-mix(in srgb, var(--accent-color) 10%, rgba(0,0,0,0))}@media (max-width: 684px){body.layout-left,body.layout-center,body.layout-full-width{padding:20px}}body.layout-center,body.layout-full-width{border:none;margin:0 auto}body.layout-full-width{max-width:100%}main{overflow-wrap:break-word}h1{font-size:calc(var(--font-size)*1.45);letter-spacing:0}h2{font-size:calc(var(--font-size)*1.35);letter-spacing:0}h3{font-size:calc(var(--font-size)*1.15);letter-spacing:0}h4,h5,h6{font-size:calc(var(--font-size)*1);letter-spacing:0}h1,h2,h3,h4,h5,h6,p,ul,ol,img,figure,video,table{margin:25px 0}a{color:var(--accent-color);outline:none}a.read-more{text-decoration:none}button{position:relative;font:inherit;font-weight:bold;text-decoration:none;text-align:center;align-items:center;background:rgba(0,0,0,0);color:var(--accent-color);padding:5px 18px;border:4px solid var(--accent-color);border-radius:var(--radius);transition:background .15s linear;appearance:none;cursor:pointer;outline:none}button:hover{background:color-mix(in srgb, var(--accent-color) 15%, rgba(0,0,0,0))}a:focus-visible,button:focus-visible,input:focus-visible{outline:1px solid var(--accent-color);outline-offset:2px}input{border:1px solid var(--text-color);border-radius:var(--radius);padding:10px;background:rgba(0,0,0,0);color:var(--text-color);appearance:none}input[type=checkbox]{padding:10px;vertical-align:middle;box-shadow:inset 0 0 0 3px var(--background-color)}input[type=checkbox]:active{box-shadow:none}input[type=checkbox]:checked{background:var(--accent-color)}img,video{display:block;max-inline-size:100%;block-size:auto}figure{margin:0 auto;width:fit-content}figure img,figure video{margin:0 auto}figure:not(.mastodon-post) figcaption{background:var(--accent-color);color:var(--background-color);text-align:center;font-size:var(--font-size);font-weight:normal;margin-top:5px;padding:5px 8px;border-radius:0 0 var(--radius) var(--radius)}figure:not(.mastodon-post) figcaption a{color:var(--background-color)}figure:not(.mastodon-post) figcaption p:first-child{margin:0}ul,ol{margin-inline-start:4ch;padding:0}ul ul,ul ol,ol ul,ol ol{margin-block:5px}ul li,ol li{position:relative}ul li::marker,ol li::marker{color:var(--accent-color)}code{font-family:"Fira Code",Monaco,Consolas,"Ubuntu Mono",monospace !important;font-feature-settings:normal;background:color-mix(in srgb, var(--text-color) 5%, rgba(0,0,0,0));border:1px solid var(--code-border);padding:1px 6px;margin:0 2px;font-size:calc(var(--font-size)*.95);color:var(--accent-color)}code code{background:rgba(0,0,0,0);padding:0;margin:0}kbd{font-family:"Fira Code",Monaco,Consolas,"Ubuntu Mono",monospace !important;font-feature-settings:normal;background:color-mix(in srgb, var(--text-color) 5%, rgba(0,0,0,0));border:1px solid var(--code-border);padding:1px 6px;margin:0 2px;font-size:calc(var(--font-size)*.95);border-top:1px solid color-mix(in srgb, var(--accent-color) 25%, rgba(0,0,0,0));border-left:1px solid var(--accent-color);border-right:1px solid var(--accent-color);border-bottom:4px solid var(--accent-color);border-radius:4px}pre{tab-size:4;background:color-mix(in srgb, var(--text-color) 5%, rgba(0,0,0,0));color:var(--text-color);padding:10px;font-size:calc(var(--font-size)*.95) !important;overflow:auto;border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--text-color) 10%, rgba(0,0,0,0))}pre code{background:unset;color:unset;margin:0;padding:0;border:none}pre code mark{display:block;min-width:fit-content}abbr{position:relative;text-decoration-style:dotted;text-decoration-color:var(--accent-color);cursor:help}sub{bottom:-.25em}sup{line-height:0;top:-.25em}mark{background:color-mix(in srgb, var(--accent-color) 45%, rgba(0,0,0,0));color:var(--text-color)}blockquote{position:relative;border-top:1px solid var(--accent-color);border-bottom:1px solid var(--accent-color);margin:0;padding:25px}blockquote::before{content:">";display:block;position:absolute;left:0;color:var(--accent-color)}blockquote p:first-child{margin-top:0}blockquote p:last-child{margin-bottom:0}table{border-collapse:collapse}table th,table td{border:2px solid var(--text-color);padding:10px}table th{border-style:solid;color:var(--text-color);text-align:left;text-transform:uppercase;letter-spacing:.04em}hr{width:100%;height:2px;border:none;background:color-mix(in srgb, var(--text-color) 50%, rgba(0,0,0,0))}details{position:relative;margin:25px 0;width:100%;border:1px solid var(--accent-color)}details>summary{padding:3px 10px;color:var(--accent-color);transition:background .15s linear}details>summary:hover{background:color-mix(in srgb, var(--accent-color) 10%, rgba(0,0,0,0))}details>summary::marker{content:none}details>summary::before{display:inline-block;content:"";border:.35rem solid rgba(0,0,0,0);border-top-color:var(--accent-color);margin-inline-start:.3em;margin-inline-end:.75rem;transform:rotate(-90deg);transition:transform .1s ease-out}details[open]>summary::before{transform:translateY(.15rem)}details>:not(img,pre>code,summary){margin-inline:15px}details>:not(img,pre>code,summary):first-of-type{margin-top:15px}details>:not(img,pre>code,summary):last-child{margin-bottom:15px}.header{display:flex;flex-direction:column}@media (max-width: 684px){.header{flex-direction:row}}.header-container{display:flex;align-items:center;justify-content:space-between;flex:1}.header-logo-container{display:flex;flex:1}.header-logo-container::after{content:"";display:block;margin-inline-start:8px;width:100%;background:repeating-linear-gradient(90deg, var(--accent-color), var(--accent-color) 2px, rgba(0,0,0,0) 0, rgba(0,0,0,0) 10px)}.header-logo-container a{flex:0 0 auto;max-width:100%;text-decoration:none}.logo{display:flex;align-items:center;padding:5px 10px;background:var(--accent-color);color:var(--background-color);font-weight:bold;text-decoration:none}@media print{.header{display:none}}.main-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.main-menu{margin:0}}.main-menu-items{position:static;display:flex;flex-wrap:wrap;gap:10px 20px;overflow:visible;border:none;margin:0;padding-bottom:10px;width:100%;background:unset;list-style:none}@media (max-width: 684px){.main-menu-items{display:none}.main-menu-items:popover-open{--shadow-color: rgb(from var(--accent-color) r g b / 70%);color:var(--accent-color);background:var(--background-color);border:2px solid var(--accent-color);box-shadow:0 10px var(--shadow-color),-10px 10px var(--shadow-color),10px 10px var(--shadow-color);padding:10px;display:flex;column-gap:10px;flex-direction:column;margin-top:calc(40px + var(--line-height));margin-inline:auto 20px;max-width:33vw;width:fit-content}.main-menu-items>li>a{display:block;padding:5px}}.main-menu-dropdown-button{display:none;border:2px solid;margin-inline-start:10px;padding:3px 8px;height:100%}@media (max-width: 684px){.main-menu-dropdown-button{display:flex}}.main-menu-dropdown-button:after{content:"";border:.35rem solid rgba(0,0,0,0);border-top-color:var(--accent-color);margin-inline-start:.5em;transform:translateY(.15em)}.skip-to-content{--shadow-color: rgb(from var(--accent-color) r g b / 70%);color:var(--accent-color);background:var(--background-color);border:2px solid var(--accent-color);box-shadow:0 10px var(--shadow-color),-10px 10px var(--shadow-color),10px 10px var(--shadow-color);padding:10px;position:fixed;top:40px;left:-1vw;z-index:99;transform:translateX(-100vw);text-align:center}@media (max-width: 684px){.skip-to-content{top:20px}}.skip-to-content:focus{left:50%;transform:translateX(-50%);outline:none}.footer{padding:40px 0}.footer a{color:inherit}.footer .socials{padding-bottom:25px}@media print{.footer .socials{display:none}}.footer .socials ul{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;margin:0;list-style:none}.footer .socials .social-link{display:flex;padding:.66rem}.footer .socials .social-link>svg{aspect-ratio:1/1;width:1.5rem;height:auto;margin:0 auto;fill:var(--footnote-color)}.footer .socials .social-link:hover{background:var(--accent-color)}.footer .socials .social-link:hover>svg{fill:var(--background-color)}.footer .copyright{text-align:center;margin:0;color:color-mix(in srgb, var(--text-color) 65%, rgba(0,0,0,0))}.footer .copyright>*{text-wrap:nowrap}.footer .copyright>*:not(:first-child)::before{content:":: "}.content ul:not(.post-meta){list-style:none}.content ul:not(.post-meta) li:not(:last-of-type){margin-bottom:3px}.content ul:not(.post-meta) li:not(:has(input))::before{content:"โฆฟ";position:absolute;left:-20px;color:var(--accent-color)}.content ul:not(.post-meta) li>input{margin-inline-start:-4ch}.content ul:not(.post-meta) ul li:not(:has(input))::before{content:"โ– "}.content ul:not(.post-meta) ul ul li:not(:has(input))::before{content:"โ–บ"}.framed{border:1px solid var(--accent-color);padding:20px;margin:25px 0}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.post{padding:30px 0;width:100%;text-align:left}.post:not(:last-of-type){border-bottom:1px solid color-mix(in srgb, var(--text-color) 10%, rgba(0,0,0,0))}.post-title{position:relative;margin-block:0 15px;padding-bottom:15px;border-bottom:3px dotted var(--accent-color);color:var(--accent-color)}.post-title::after{content:"";position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted var(--accent-color)}.post-title a{text-decoration:none}ul.post-meta{list-style:none;display:block;margin:0 0 8px;color:color-mix(in srgb, var(--text-color) 65%, rgba(0,0,0,0))}ul.post-meta>li{display:inline}ul.post-meta>li::before{content:""}ul.post-meta>li[role=separator]{user-select:none}ul.post-meta>li.draft-label{display:block;float:right;margin-top:-2px;padding-block:2px;padding-inline:8px;background-color:var(--accent-color);color:var(--background-color)}.post-tags{display:flex;flex-wrap:wrap;column-gap:8px;margin-bottom:20px;color:var(--accent-color)}.post-tags>[role=separator]{user-select:none}h1 .post-anchor,h2 .post-anchor,h3 .post-anchor,h4 .post-anchor,h5 .post-anchor,h6 .post-anchor{margin-inline-start:10px;opacity:0%;color:var(--accent-color);text-decoration:none;user-select:none}@media screen and (max-width: 684px){h1 .post-anchor,h2 .post-anchor,h3 .post-anchor,h4 .post-anchor,h5 .post-anchor,h6 .post-anchor{opacity:100%}}@media print{h1 .post-anchor,h2 .post-anchor,h3 .post-anchor,h4 .post-anchor,h5 .post-anchor,h6 .post-anchor{display:none}}h1:focus-within .post-anchor,h1:hover .post-anchor,h2:focus-within .post-anchor,h2:hover .post-anchor,h3:focus-within .post-anchor,h3:hover .post-anchor,h4:focus-within .post-anchor,h4:hover .post-anchor,h5:focus-within .post-anchor,h5:hover .post-anchor,h6:focus-within .post-anchor,h6:hover .post-anchor{opacity:100%}.footnote-reference{font-family:var(--serif-font);font-size:.7rem}.footnote-definition{color:var(--footnote-color);margin-block-end:.6rem}.footnote-definition sup{color:var(--accent-color);margin-inline-end:.15rem;font-size:.75rem}.footnote-definition p{display:inline}.footnotes{border-top:2px solid var(--footnote-color)}.footnotes .footnotes-list p{color:var(--footnote-color);text-align:start}@media print{.post-navigation{display:none}}.post-navigation-title{display:flex;text-align:center;position:relative;margin:45px 0 20px}.post-navigation-title h2{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background-color);color:color-mix(in srgb var(--text-color) 30%, rgba(0,0,0,0));font-size:calc(var(--font-size)*.8);font-weight:normal;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.post-navigation-title hr{background:var(--accent-color);position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.post-navigation-buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px;padding-bottom:30px}.post-navigation-buttons>a{display:inline;text-align:center;text-decoration:none}:root{--code-border: color-mix(in srgb, var(--text-color) 10%, transparent)}.copy-button{position:absolute;top:6px;right:10px;padding:3px 8px;width:4.5rem;border:1px solid color-mix(in srgb, var(--accent-color) 15%, rgba(0,0,0,0));font-size:calc(var(--font-size)*.8);font-weight:normal;line-height:1em}@media print{.copy-button{display:none}}pre[data-lang]{display:block;position:relative;padding:0;overflow-y:hidden}pre[data-lang]::before{content:attr(data-lang);display:block;padding:6px 10px;border-bottom:1px solid var(--code-border);color:color-mix(in srgb, var(--text-color) 53%, rgba(0,0,0,0));font-size:calc(var(--font-size)*.8);text-transform:uppercase;line-height:21px}pre[data-lang] code[data-lang]{display:block;overflow-x:auto;padding:10px}pre[data-lang] code[data-lang][data-name]::before{content:attr(data-name);position:absolute;top:0;right:0;display:block;padding:6px 10px;max-width:60%;color:color-mix(in srgb, var(--text-color) 53%, rgba(0,0,0,0));font-size:calc(var(--font-size)*.8);line-height:21px;overflow:hidden;text-overflow:ellipsis}@media screen{pre[data-lang] code[data-lang]:has(.copy-button)::before{right:calc(4.5rem + 10px)}}pre[data-lang] code[data-lang] mark{margin-inline:-10px;padding-inline:10px;color:unset}pre[data-lang] code[data-lang] table{margin-block:0;width:100%;border-collapse:collapse}pre[data-lang] code[data-lang] table td,pre[data-lang] code[data-lang] table th,pre[data-lang] code[data-lang] table tr{border:none;padding:0}pre[data-lang] code[data-lang] table tr td:first-child{color:color-mix(in srgb, var(--text-color) 53%, rgba(0,0,0,0));text-align:end;user-select:none;padding-inline-end:20px}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination ul{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;padding-bottom:30px;list-style:none;margin:0}.pagination ul>*:not(:first-child)::before{content:"::";margin:0 10px}.pagination ul li{display:inline-flex}.pagination ul li a{display:inline-flex;text-wrap:nowrap;text-decoration:none}ul.taxonomy-list{list-style:none}ul.taxonomy-list>li{margin-block-end:1rem}.three-column{column-count:3}.two-column{column-count:2}:root{--alert-note-border: #F5F5F5;--alert-note-bg: #696969;--alert-note-code: #707070;--alert-tip-border: #A6E22E;--alert-tip-bg: #405A0C;--alert-tip-code: #50700F;--alert-info-border: #66D9EF;--alert-info-bg: #0B5666;--alert-info-code: #0D687D;--alert-important-border: var(--alert-info-border);--alert-important-bg: var(--alert-info-bg);--alert-important-code: var(--alert-info-code);--alert-warning-border: #EEC35E;--alert-warning-bg: #61470A;--alert-warning-code: #78580D;--alert-danger-border: #FD2774;--alert-danger-bg: #2D0111;--alert-danger-code: #5F0224;--alert-caution-border: var(--alert-danger-border);--alert-caution-bg: var(--alert-danger-bg);--alert-caution-code: var(--alert-danger-code)}.alert,.markdown-alert-caution,.markdown-alert-warning,.markdown-alert-important,.markdown-alert-tip,.markdown-alert-note{display:flex;align-items:flex-start;margin-block:25px;border-radius:var(--radius);border:1px solid;padding:25px}.alert-content,.markdown-alert-caution>p,.markdown-alert-warning>p,.markdown-alert-important>p,.markdown-alert-tip>p,.markdown-alert-note>p{flex:1;margin-inline-start:-2rem}.alert-content>:not(:first-child),.markdown-alert-caution>p>:not(:first-child),.markdown-alert-warning>p>:not(:first-child),.markdown-alert-important>p>:not(:first-child),.markdown-alert-tip>p>:not(:first-child),.markdown-alert-note>p>:not(:first-child){margin-block:1rem 0}.alert-content code,.markdown-alert-caution>p code,.markdown-alert-warning>p code,.markdown-alert-important>p code,.markdown-alert-tip>p code,.markdown-alert-note>p code{color:inherit}.alert-content strong,.markdown-alert-caution>p strong,.markdown-alert-warning>p strong,.markdown-alert-important>p strong,.markdown-alert-tip>p strong,.markdown-alert-note>p strong{font-weight:580}.alert-icon,.markdown-alert-caution::before,.markdown-alert-warning::before,.markdown-alert-important::before,.markdown-alert-tip::before,.markdown-alert-note::before{display:flex;align-items:center;margin-inline-end:.5rem;background-size:contain;background-repeat:no-repeat;aspect-ratio:1/1;width:1.5rem}.alert-title,.markdown-alert-caution>p::before,.markdown-alert-warning>p::before,.markdown-alert-important>p::before,.markdown-alert-tip>p::before,.markdown-alert-note>p::before{display:flex;align-items:center;margin-inline-start:2rem;font-weight:bold}.alert-icon-note,.markdown-alert-note::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3E%3C/svg%3E")}.alert-icon-tip,.markdown-alert-tip::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M480-78.258q-33.718 0-56.974-22.166-23.256-22.167-23.59-55.885h161.128q-.334 33.718-23.59 55.885Q513.718-78.258 480-78.258ZM318.257-210.515v-67.588h323.486v67.588H318.257Zm7.846-121.128q-67.692-42.487-106.896-109.134-39.205-66.648-39.205-147.479 0-123.769 88.149-211.884 88.149-88.115 211.967-88.115 123.817 0 211.849 88.115 88.031 88.115 88.031 211.884 0 80.831-38.999 147.479-39 66.647-107.102 109.134H326.103Zm21.927-67.588h264.351q46.311-32 73.17-81.681 26.859-49.68 26.859-107.144 0-96.918-68-164.765-68-67.846-164.564-67.846t-164.41 67.713q-67.846 67.712-67.846 164.725 0 57.52 26.859 107.259t73.581 81.739Zm131.97 0Z'/%3E%3C/svg%3E")}.alert-icon-info,.alert-icon-important,.markdown-alert-important::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M479.789-288Q495-288 505.5-298.289q10.5-10.29 10.5-25.5Q516-339 505.711-349.5q-10.29-10.5-25.5-10.5Q465-360 454.5-349.711q-10.5 10.29-10.5 25.5Q444-309 454.289-298.5q10.29 10.5 25.5 10.5ZM444-432h72v-240h-72v240Zm36.276 336Q401-96 331-126q-70-30-122.5-82.5T126-330.958q-30-69.959-30-149.5Q96-560 126-629.5t82.5-122Q261-804 330.958-834q69.959-30 149.5-30Q560-864 629.5-834t122 82.5Q804-699 834-629.276q30 69.725 30 149Q864-401 834-331q-30 70-82.5 122.5T629.276-126q-69.725 30-149 30ZM480-168q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z'/%3E%3C/svg%3E")}.alert-icon-warning,.markdown-alert-warning::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M109-120q-11 0-20-5.5T75-140q-5-9-5.5-19.5T75-180l370-640q6-10 15.5-15t19.5-5q10 0 19.5 5t15.5 15l370 640q6 10 5.5 20.5T885-140q-5 9-14 14.5t-20 5.5H109Zm69-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm0-120q17 0 28.5-11.5T520-400v-120q0-17-11.5-28.5T480-560q-17 0-28.5 11.5T440-520v120q0 17 11.5 28.5T480-360Zm0-100Z'/%3E%3C/svg%3E")}.alert-icon-danger,.alert-icon-caution,.markdown-alert-caution::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M239.256-400q0 58.091 27.975 108.995t76.13 81.237q-5.616-8.513-8.487-18.398-2.872-9.885-2.872-19.167 1.333-26.436 12.153-50.307 10.821-23.872 31.41-43.461L480-443.921l105.819 102.82q18.923 19.311 29.885 43.321 10.961 24.011 12.294 50.447 0 9.282-2.872 19.167-2.871 9.885-7.82 18.398 47.488-30.333 75.796-81.237Q721.41-341.909 721.41-400q0-47.622-19.258-93.169-19.259-45.547-53.998-82.549-19.951 13.41-42.202 19.859Q583.7-549.41 561-549.41q-62.448 0-105.108-38.039-42.661-38.038-51.225-98.628v-9.744q-39.385 31.949-69.898 67.68-30.513 35.73-51.987 74.166t-32.5 77.464Q239.256-437.483 239.256-400ZM480-349.539l-57.436 56.436q-12.154 11.821-17.731 26.029-5.577 14.208-5.577 29.074 0 32.769 23.498 55.757 23.497 22.987 57.246 22.987 33.432 0 57.421-22.906 23.989-22.906 23.989-55.561 0-16.162-6.116-30.162-6.116-13.999-17.454-25.154l-57.84-56.5Zm-11.002-469.022V-708q0 38.637 26.832 64.819 26.831 26.183 65.17 26.183 15.609 0 30.818-5.923 15.208-5.923 28.131-17.718l22.615-24.102q67.564 44.128 106.999 114.917 39.435 70.79 39.435 150.156 0 128.206-89.846 218.103Q609.307-91.668 480-91.668q-129.027 0-218.68-89.652-89.652-89.653-89.652-218.68 0-119.178 79.371-232.447t217.959-186.114Z'/%3E%3C/svg%3E")}.alert.note,.note.markdown-alert-caution,.note.markdown-alert-warning,.note.markdown-alert-important,.note.markdown-alert-tip,.note.markdown-alert-note{border-color:var(--alert-note-border);background-color:color-mix(in srgb, var(--alert-note-bg) 15%, rgba(0,0,0,0))}.alert.note>.alert-content>p>code,.note.markdown-alert-caution>.alert-content>p>code,.markdown-alert-caution.note>p>p>code,.note.markdown-alert-warning>.alert-content>p>code,.markdown-alert-warning.note>p>p>code,.note.markdown-alert-important>.alert-content>p>code,.markdown-alert-important.note>p>p>code,.note.markdown-alert-tip>.alert-content>p>code,.markdown-alert-tip.note>p>p>code,.note.markdown-alert-note>.alert-content>p>code,.markdown-alert-note.note>p>p>code{background-color:var(--alert-note-code)}.alert.note a,.note.markdown-alert-caution a,.note.markdown-alert-warning a,.note.markdown-alert-important a,.note.markdown-alert-tip a,.note.markdown-alert-note a{color:var(--alert-note-border)}.alert.note a code,.note.markdown-alert-caution a code,.note.markdown-alert-warning a code,.note.markdown-alert-important a code,.note.markdown-alert-tip a code,.note.markdown-alert-note a code{background-color:var(--alert-note-bg)}.alert.note .alert-title,.alert.note .markdown-alert-caution>p::before,.note.markdown-alert-caution .alert-title,.note.markdown-alert-caution .markdown-alert-caution>p::before,.alert.note .markdown-alert-warning>p::before,.note.markdown-alert-caution .markdown-alert-warning>p::before,.note.markdown-alert-warning .alert-title,.note.markdown-alert-warning .markdown-alert-caution>p::before,.note.markdown-alert-warning .markdown-alert-warning>p::before,.alert.note .markdown-alert-important>p::before,.note.markdown-alert-caution .markdown-alert-important>p::before,.note.markdown-alert-warning .markdown-alert-important>p::before,.note.markdown-alert-important .alert-title,.note.markdown-alert-important .markdown-alert-caution>p::before,.note.markdown-alert-important .markdown-alert-warning>p::before,.note.markdown-alert-important .markdown-alert-important>p::before,.alert.note .markdown-alert-tip>p::before,.note.markdown-alert-caution .markdown-alert-tip>p::before,.note.markdown-alert-warning .markdown-alert-tip>p::before,.note.markdown-alert-important .markdown-alert-tip>p::before,.note.markdown-alert-tip .alert-title,.note.markdown-alert-tip .markdown-alert-caution>p::before,.note.markdown-alert-tip .markdown-alert-warning>p::before,.note.markdown-alert-tip .markdown-alert-important>p::before,.note.markdown-alert-tip .markdown-alert-tip>p::before,.alert.note .markdown-alert-note>p::before,.note.markdown-alert-caution .markdown-alert-note>p::before,.note.markdown-alert-warning .markdown-alert-note>p::before,.note.markdown-alert-important .markdown-alert-note>p::before,.note.markdown-alert-tip .markdown-alert-note>p::before,.note.markdown-alert-note .alert-title,.note.markdown-alert-note .markdown-alert-caution>p::before,.note.markdown-alert-note .markdown-alert-warning>p::before,.note.markdown-alert-note .markdown-alert-important>p::before,.note.markdown-alert-note .markdown-alert-tip>p::before,.note.markdown-alert-note .markdown-alert-note>p::before{color:var(--alert-note-border)}.alert.note .alert-icon,.alert.note .markdown-alert-caution::before,.note.markdown-alert-caution .alert-icon,.note.markdown-alert-caution .markdown-alert-caution::before,.alert.note .markdown-alert-warning::before,.note.markdown-alert-caution .markdown-alert-warning::before,.note.markdown-alert-warning .alert-icon,.note.markdown-alert-warning .markdown-alert-caution::before,.note.markdown-alert-warning .markdown-alert-warning::before,.alert.note .markdown-alert-important::before,.note.markdown-alert-caution .markdown-alert-important::before,.note.markdown-alert-warning .markdown-alert-important::before,.note.markdown-alert-important .alert-icon,.note.markdown-alert-important .markdown-alert-caution::before,.note.markdown-alert-important .markdown-alert-warning::before,.note.markdown-alert-important .markdown-alert-important::before,.alert.note .markdown-alert-tip::before,.note.markdown-alert-caution .markdown-alert-tip::before,.note.markdown-alert-warning .markdown-alert-tip::before,.note.markdown-alert-important .markdown-alert-tip::before,.note.markdown-alert-tip .alert-icon,.note.markdown-alert-tip .markdown-alert-caution::before,.note.markdown-alert-tip .markdown-alert-warning::before,.note.markdown-alert-tip .markdown-alert-important::before,.note.markdown-alert-tip .markdown-alert-tip::before,.alert.note .markdown-alert-note::before,.note.markdown-alert-caution .markdown-alert-note::before,.note.markdown-alert-warning .markdown-alert-note::before,.note.markdown-alert-important .markdown-alert-note::before,.note.markdown-alert-tip .markdown-alert-note::before,.note.markdown-alert-note .alert-icon,.note.markdown-alert-note .markdown-alert-caution::before,.note.markdown-alert-note .markdown-alert-warning::before,.note.markdown-alert-note .markdown-alert-important::before,.note.markdown-alert-note .markdown-alert-tip::before,.note.markdown-alert-note .markdown-alert-note::before{background-color:var(--alert-note-border)}.alert.tip,.tip.markdown-alert-caution,.tip.markdown-alert-warning,.tip.markdown-alert-important,.tip.markdown-alert-tip,.tip.markdown-alert-note{border-color:var(--alert-tip-border);background-color:color-mix(in srgb, var(--alert-tip-bg) 15%, rgba(0,0,0,0))}.alert.tip>.alert-content>p>code,.tip.markdown-alert-caution>.alert-content>p>code,.markdown-alert-caution.tip>p>p>code,.tip.markdown-alert-warning>.alert-content>p>code,.markdown-alert-warning.tip>p>p>code,.tip.markdown-alert-important>.alert-content>p>code,.markdown-alert-important.tip>p>p>code,.tip.markdown-alert-tip>.alert-content>p>code,.markdown-alert-tip.tip>p>p>code,.tip.markdown-alert-note>.alert-content>p>code,.markdown-alert-note.tip>p>p>code{background-color:var(--alert-tip-code)}.alert.tip a,.tip.markdown-alert-caution a,.tip.markdown-alert-warning a,.tip.markdown-alert-important a,.tip.markdown-alert-tip a,.tip.markdown-alert-note a{color:var(--alert-tip-border)}.alert.tip a code,.tip.markdown-alert-caution a code,.tip.markdown-alert-warning a code,.tip.markdown-alert-important a code,.tip.markdown-alert-tip a code,.tip.markdown-alert-note a code{background-color:var(--alert-tip-bg)}.alert.tip .alert-title,.alert.tip .markdown-alert-caution>p::before,.tip.markdown-alert-caution .alert-title,.tip.markdown-alert-caution .markdown-alert-caution>p::before,.alert.tip .markdown-alert-warning>p::before,.tip.markdown-alert-caution .markdown-alert-warning>p::before,.tip.markdown-alert-warning .alert-title,.tip.markdown-alert-warning .markdown-alert-caution>p::before,.tip.markdown-alert-warning .markdown-alert-warning>p::before,.alert.tip .markdown-alert-important>p::before,.tip.markdown-alert-caution .markdown-alert-important>p::before,.tip.markdown-alert-warning .markdown-alert-important>p::before,.tip.markdown-alert-important .alert-title,.tip.markdown-alert-important .markdown-alert-caution>p::before,.tip.markdown-alert-important .markdown-alert-warning>p::before,.tip.markdown-alert-important .markdown-alert-important>p::before,.alert.tip .markdown-alert-tip>p::before,.tip.markdown-alert-caution .markdown-alert-tip>p::before,.tip.markdown-alert-warning .markdown-alert-tip>p::before,.tip.markdown-alert-important .markdown-alert-tip>p::before,.tip.markdown-alert-tip .alert-title,.tip.markdown-alert-tip .markdown-alert-caution>p::before,.tip.markdown-alert-tip .markdown-alert-warning>p::before,.tip.markdown-alert-tip .markdown-alert-important>p::before,.tip.markdown-alert-tip .markdown-alert-tip>p::before,.alert.tip .markdown-alert-note>p::before,.tip.markdown-alert-caution .markdown-alert-note>p::before,.tip.markdown-alert-warning .markdown-alert-note>p::before,.tip.markdown-alert-important .markdown-alert-note>p::before,.tip.markdown-alert-tip .markdown-alert-note>p::before,.tip.markdown-alert-note .alert-title,.tip.markdown-alert-note .markdown-alert-caution>p::before,.tip.markdown-alert-note .markdown-alert-warning>p::before,.tip.markdown-alert-note .markdown-alert-important>p::before,.tip.markdown-alert-note .markdown-alert-tip>p::before,.tip.markdown-alert-note .markdown-alert-note>p::before{color:var(--alert-tip-border)}.alert.tip .alert-icon,.alert.tip .markdown-alert-caution::before,.tip.markdown-alert-caution .alert-icon,.tip.markdown-alert-caution .markdown-alert-caution::before,.alert.tip .markdown-alert-warning::before,.tip.markdown-alert-caution .markdown-alert-warning::before,.tip.markdown-alert-warning .alert-icon,.tip.markdown-alert-warning .markdown-alert-caution::before,.tip.markdown-alert-warning .markdown-alert-warning::before,.alert.tip .markdown-alert-important::before,.tip.markdown-alert-caution .markdown-alert-important::before,.tip.markdown-alert-warning .markdown-alert-important::before,.tip.markdown-alert-important .alert-icon,.tip.markdown-alert-important .markdown-alert-caution::before,.tip.markdown-alert-important .markdown-alert-warning::before,.tip.markdown-alert-important .markdown-alert-important::before,.alert.tip .markdown-alert-tip::before,.tip.markdown-alert-caution .markdown-alert-tip::before,.tip.markdown-alert-warning .markdown-alert-tip::before,.tip.markdown-alert-important .markdown-alert-tip::before,.tip.markdown-alert-tip .alert-icon,.tip.markdown-alert-tip .markdown-alert-caution::before,.tip.markdown-alert-tip .markdown-alert-warning::before,.tip.markdown-alert-tip .markdown-alert-important::before,.tip.markdown-alert-tip .markdown-alert-tip::before,.alert.tip .markdown-alert-note::before,.tip.markdown-alert-caution .markdown-alert-note::before,.tip.markdown-alert-warning .markdown-alert-note::before,.tip.markdown-alert-important .markdown-alert-note::before,.tip.markdown-alert-tip .markdown-alert-note::before,.tip.markdown-alert-note .alert-icon,.tip.markdown-alert-note .markdown-alert-caution::before,.tip.markdown-alert-note .markdown-alert-warning::before,.tip.markdown-alert-note .markdown-alert-important::before,.tip.markdown-alert-note .markdown-alert-tip::before,.tip.markdown-alert-note .markdown-alert-note::before{background-color:var(--alert-tip-border)}.alert.info,.info.markdown-alert-caution,.info.markdown-alert-warning,.info.markdown-alert-important,.info.markdown-alert-tip,.info.markdown-alert-note{border-color:var(--alert-info-border);background-color:color-mix(in srgb, var(--alert-info-bg) 15%, rgba(0,0,0,0))}.alert.info>.alert-content>p>code,.info.markdown-alert-caution>.alert-content>p>code,.markdown-alert-caution.info>p>p>code,.info.markdown-alert-warning>.alert-content>p>code,.markdown-alert-warning.info>p>p>code,.info.markdown-alert-important>.alert-content>p>code,.markdown-alert-important.info>p>p>code,.info.markdown-alert-tip>.alert-content>p>code,.markdown-alert-tip.info>p>p>code,.info.markdown-alert-note>.alert-content>p>code,.markdown-alert-note.info>p>p>code{background-color:var(--alert-info-code)}.alert.info a,.info.markdown-alert-caution a,.info.markdown-alert-warning a,.info.markdown-alert-important a,.info.markdown-alert-tip a,.info.markdown-alert-note a{color:var(--alert-info-border)}.alert.info a code,.info.markdown-alert-caution a code,.info.markdown-alert-warning a code,.info.markdown-alert-important a code,.info.markdown-alert-tip a code,.info.markdown-alert-note a code{background-color:var(--alert-info-bg)}.alert.info .alert-title,.alert.info .markdown-alert-caution>p::before,.info.markdown-alert-caution .alert-title,.info.markdown-alert-caution .markdown-alert-caution>p::before,.alert.info .markdown-alert-warning>p::before,.info.markdown-alert-caution .markdown-alert-warning>p::before,.info.markdown-alert-warning .alert-title,.info.markdown-alert-warning .markdown-alert-caution>p::before,.info.markdown-alert-warning .markdown-alert-warning>p::before,.alert.info .markdown-alert-important>p::before,.info.markdown-alert-caution .markdown-alert-important>p::before,.info.markdown-alert-warning .markdown-alert-important>p::before,.info.markdown-alert-important .alert-title,.info.markdown-alert-important .markdown-alert-caution>p::before,.info.markdown-alert-important .markdown-alert-warning>p::before,.info.markdown-alert-important .markdown-alert-important>p::before,.alert.info .markdown-alert-tip>p::before,.info.markdown-alert-caution .markdown-alert-tip>p::before,.info.markdown-alert-warning .markdown-alert-tip>p::before,.info.markdown-alert-important .markdown-alert-tip>p::before,.info.markdown-alert-tip .alert-title,.info.markdown-alert-tip .markdown-alert-caution>p::before,.info.markdown-alert-tip .markdown-alert-warning>p::before,.info.markdown-alert-tip .markdown-alert-important>p::before,.info.markdown-alert-tip .markdown-alert-tip>p::before,.alert.info .markdown-alert-note>p::before,.info.markdown-alert-caution .markdown-alert-note>p::before,.info.markdown-alert-warning .markdown-alert-note>p::before,.info.markdown-alert-important .markdown-alert-note>p::before,.info.markdown-alert-tip .markdown-alert-note>p::before,.info.markdown-alert-note .alert-title,.info.markdown-alert-note .markdown-alert-caution>p::before,.info.markdown-alert-note .markdown-alert-warning>p::before,.info.markdown-alert-note .markdown-alert-important>p::before,.info.markdown-alert-note .markdown-alert-tip>p::before,.info.markdown-alert-note .markdown-alert-note>p::before{color:var(--alert-info-border)}.alert.info .alert-icon,.alert.info .markdown-alert-caution::before,.info.markdown-alert-caution .alert-icon,.info.markdown-alert-caution .markdown-alert-caution::before,.alert.info .markdown-alert-warning::before,.info.markdown-alert-caution .markdown-alert-warning::before,.info.markdown-alert-warning .alert-icon,.info.markdown-alert-warning .markdown-alert-caution::before,.info.markdown-alert-warning .markdown-alert-warning::before,.alert.info .markdown-alert-important::before,.info.markdown-alert-caution .markdown-alert-important::before,.info.markdown-alert-warning .markdown-alert-important::before,.info.markdown-alert-important .alert-icon,.info.markdown-alert-important .markdown-alert-caution::before,.info.markdown-alert-important .markdown-alert-warning::before,.info.markdown-alert-important .markdown-alert-important::before,.alert.info .markdown-alert-tip::before,.info.markdown-alert-caution .markdown-alert-tip::before,.info.markdown-alert-warning .markdown-alert-tip::before,.info.markdown-alert-important .markdown-alert-tip::before,.info.markdown-alert-tip .alert-icon,.info.markdown-alert-tip .markdown-alert-caution::before,.info.markdown-alert-tip .markdown-alert-warning::before,.info.markdown-alert-tip .markdown-alert-important::before,.info.markdown-alert-tip .markdown-alert-tip::before,.alert.info .markdown-alert-note::before,.info.markdown-alert-caution .markdown-alert-note::before,.info.markdown-alert-warning .markdown-alert-note::before,.info.markdown-alert-important .markdown-alert-note::before,.info.markdown-alert-tip .markdown-alert-note::before,.info.markdown-alert-note .alert-icon,.info.markdown-alert-note .markdown-alert-caution::before,.info.markdown-alert-note .markdown-alert-warning::before,.info.markdown-alert-note .markdown-alert-important::before,.info.markdown-alert-note .markdown-alert-tip::before,.info.markdown-alert-note .markdown-alert-note::before{background-color:var(--alert-info-border)}.alert.warning,.warning.markdown-alert-caution,.warning.markdown-alert-warning,.warning.markdown-alert-important,.warning.markdown-alert-tip,.warning.markdown-alert-note{border-color:var(--alert-warning-border);background-color:color-mix(in srgb, var(--alert-warning-bg) 15%, rgba(0,0,0,0))}.alert.warning>.alert-content>p>code,.warning.markdown-alert-caution>.alert-content>p>code,.markdown-alert-caution.warning>p>p>code,.warning.markdown-alert-warning>.alert-content>p>code,.markdown-alert-warning.warning>p>p>code,.warning.markdown-alert-important>.alert-content>p>code,.markdown-alert-important.warning>p>p>code,.warning.markdown-alert-tip>.alert-content>p>code,.markdown-alert-tip.warning>p>p>code,.warning.markdown-alert-note>.alert-content>p>code,.markdown-alert-note.warning>p>p>code{background-color:var(--alert-warning-code)}.alert.warning a,.warning.markdown-alert-caution a,.warning.markdown-alert-warning a,.warning.markdown-alert-important a,.warning.markdown-alert-tip a,.warning.markdown-alert-note a{color:var(--alert-warning-border)}.alert.warning a code,.warning.markdown-alert-caution a code,.warning.markdown-alert-warning a code,.warning.markdown-alert-important a code,.warning.markdown-alert-tip a code,.warning.markdown-alert-note a code{background-color:var(--alert-warning-bg)}.alert.warning .alert-title,.alert.warning .markdown-alert-caution>p::before,.warning.markdown-alert-caution .alert-title,.warning.markdown-alert-caution .markdown-alert-caution>p::before,.alert.warning .markdown-alert-warning>p::before,.warning.markdown-alert-caution .markdown-alert-warning>p::before,.warning.markdown-alert-warning .alert-title,.warning.markdown-alert-warning .markdown-alert-caution>p::before,.warning.markdown-alert-warning .markdown-alert-warning>p::before,.alert.warning .markdown-alert-important>p::before,.warning.markdown-alert-caution .markdown-alert-important>p::before,.warning.markdown-alert-warning .markdown-alert-important>p::before,.warning.markdown-alert-important .alert-title,.warning.markdown-alert-important .markdown-alert-caution>p::before,.warning.markdown-alert-important .markdown-alert-warning>p::before,.warning.markdown-alert-important .markdown-alert-important>p::before,.alert.warning .markdown-alert-tip>p::before,.warning.markdown-alert-caution .markdown-alert-tip>p::before,.warning.markdown-alert-warning .markdown-alert-tip>p::before,.warning.markdown-alert-important .markdown-alert-tip>p::before,.warning.markdown-alert-tip .alert-title,.warning.markdown-alert-tip .markdown-alert-caution>p::before,.warning.markdown-alert-tip .markdown-alert-warning>p::before,.warning.markdown-alert-tip .markdown-alert-important>p::before,.warning.markdown-alert-tip .markdown-alert-tip>p::before,.alert.warning .markdown-alert-note>p::before,.warning.markdown-alert-caution .markdown-alert-note>p::before,.warning.markdown-alert-warning .markdown-alert-note>p::before,.warning.markdown-alert-important .markdown-alert-note>p::before,.warning.markdown-alert-tip .markdown-alert-note>p::before,.warning.markdown-alert-note .alert-title,.warning.markdown-alert-note .markdown-alert-caution>p::before,.warning.markdown-alert-note .markdown-alert-warning>p::before,.warning.markdown-alert-note .markdown-alert-important>p::before,.warning.markdown-alert-note .markdown-alert-tip>p::before,.warning.markdown-alert-note .markdown-alert-note>p::before{color:var(--alert-warning-border)}.alert.warning .alert-icon,.alert.warning .markdown-alert-caution::before,.warning.markdown-alert-caution .alert-icon,.warning.markdown-alert-caution .markdown-alert-caution::before,.alert.warning .markdown-alert-warning::before,.warning.markdown-alert-caution .markdown-alert-warning::before,.warning.markdown-alert-warning .alert-icon,.warning.markdown-alert-warning .markdown-alert-caution::before,.warning.markdown-alert-warning .markdown-alert-warning::before,.alert.warning .markdown-alert-important::before,.warning.markdown-alert-caution .markdown-alert-important::before,.warning.markdown-alert-warning .markdown-alert-important::before,.warning.markdown-alert-important .alert-icon,.warning.markdown-alert-important .markdown-alert-caution::before,.warning.markdown-alert-important .markdown-alert-warning::before,.warning.markdown-alert-important .markdown-alert-important::before,.alert.warning .markdown-alert-tip::before,.warning.markdown-alert-caution .markdown-alert-tip::before,.warning.markdown-alert-warning .markdown-alert-tip::before,.warning.markdown-alert-important .markdown-alert-tip::before,.warning.markdown-alert-tip .alert-icon,.warning.markdown-alert-tip .markdown-alert-caution::before,.warning.markdown-alert-tip .markdown-alert-warning::before,.warning.markdown-alert-tip .markdown-alert-important::before,.warning.markdown-alert-tip .markdown-alert-tip::before,.alert.warning .markdown-alert-note::before,.warning.markdown-alert-caution .markdown-alert-note::before,.warning.markdown-alert-warning .markdown-alert-note::before,.warning.markdown-alert-important .markdown-alert-note::before,.warning.markdown-alert-tip .markdown-alert-note::before,.warning.markdown-alert-note .alert-icon,.warning.markdown-alert-note .markdown-alert-caution::before,.warning.markdown-alert-note .markdown-alert-warning::before,.warning.markdown-alert-note .markdown-alert-important::before,.warning.markdown-alert-note .markdown-alert-tip::before,.warning.markdown-alert-note .markdown-alert-note::before{background-color:var(--alert-warning-border)}.alert.danger,.danger.markdown-alert-caution,.danger.markdown-alert-warning,.danger.markdown-alert-important,.danger.markdown-alert-tip,.danger.markdown-alert-note{border-color:var(--alert-danger-border);background-color:color-mix(in srgb, var(--alert-danger-bg) 15%, rgba(0,0,0,0))}.alert.danger>.alert-content>p>code,.danger.markdown-alert-caution>.alert-content>p>code,.markdown-alert-caution.danger>p>p>code,.danger.markdown-alert-warning>.alert-content>p>code,.markdown-alert-warning.danger>p>p>code,.danger.markdown-alert-important>.alert-content>p>code,.markdown-alert-important.danger>p>p>code,.danger.markdown-alert-tip>.alert-content>p>code,.markdown-alert-tip.danger>p>p>code,.danger.markdown-alert-note>.alert-content>p>code,.markdown-alert-note.danger>p>p>code{background-color:var(--alert-danger-code)}.alert.danger a,.danger.markdown-alert-caution a,.danger.markdown-alert-warning a,.danger.markdown-alert-important a,.danger.markdown-alert-tip a,.danger.markdown-alert-note a{color:var(--alert-danger-border)}.alert.danger a code,.danger.markdown-alert-caution a code,.danger.markdown-alert-warning a code,.danger.markdown-alert-important a code,.danger.markdown-alert-tip a code,.danger.markdown-alert-note a code{background-color:var(--alert-danger-bg)}.alert.danger .alert-title,.alert.danger .markdown-alert-caution>p::before,.danger.markdown-alert-caution .alert-title,.danger.markdown-alert-caution .markdown-alert-caution>p::before,.alert.danger .markdown-alert-warning>p::before,.danger.markdown-alert-caution .markdown-alert-warning>p::before,.danger.markdown-alert-warning .alert-title,.danger.markdown-alert-warning .markdown-alert-caution>p::before,.danger.markdown-alert-warning .markdown-alert-warning>p::before,.alert.danger .markdown-alert-important>p::before,.danger.markdown-alert-caution .markdown-alert-important>p::before,.danger.markdown-alert-warning .markdown-alert-important>p::before,.danger.markdown-alert-important .alert-title,.danger.markdown-alert-important .markdown-alert-caution>p::before,.danger.markdown-alert-important .markdown-alert-warning>p::before,.danger.markdown-alert-important .markdown-alert-important>p::before,.alert.danger .markdown-alert-tip>p::before,.danger.markdown-alert-caution .markdown-alert-tip>p::before,.danger.markdown-alert-warning .markdown-alert-tip>p::before,.danger.markdown-alert-important .markdown-alert-tip>p::before,.danger.markdown-alert-tip .alert-title,.danger.markdown-alert-tip .markdown-alert-caution>p::before,.danger.markdown-alert-tip .markdown-alert-warning>p::before,.danger.markdown-alert-tip .markdown-alert-important>p::before,.danger.markdown-alert-tip .markdown-alert-tip>p::before,.alert.danger .markdown-alert-note>p::before,.danger.markdown-alert-caution .markdown-alert-note>p::before,.danger.markdown-alert-warning .markdown-alert-note>p::before,.danger.markdown-alert-important .markdown-alert-note>p::before,.danger.markdown-alert-tip .markdown-alert-note>p::before,.danger.markdown-alert-note .alert-title,.danger.markdown-alert-note .markdown-alert-caution>p::before,.danger.markdown-alert-note .markdown-alert-warning>p::before,.danger.markdown-alert-note .markdown-alert-important>p::before,.danger.markdown-alert-note .markdown-alert-tip>p::before,.danger.markdown-alert-note .markdown-alert-note>p::before{color:var(--alert-danger-border)}.alert.danger .alert-icon,.alert.danger .markdown-alert-caution::before,.danger.markdown-alert-caution .alert-icon,.danger.markdown-alert-caution .markdown-alert-caution::before,.alert.danger .markdown-alert-warning::before,.danger.markdown-alert-caution .markdown-alert-warning::before,.danger.markdown-alert-warning .alert-icon,.danger.markdown-alert-warning .markdown-alert-caution::before,.danger.markdown-alert-warning .markdown-alert-warning::before,.alert.danger .markdown-alert-important::before,.danger.markdown-alert-caution .markdown-alert-important::before,.danger.markdown-alert-warning .markdown-alert-important::before,.danger.markdown-alert-important .alert-icon,.danger.markdown-alert-important .markdown-alert-caution::before,.danger.markdown-alert-important .markdown-alert-warning::before,.danger.markdown-alert-important .markdown-alert-important::before,.alert.danger .markdown-alert-tip::before,.danger.markdown-alert-caution .markdown-alert-tip::before,.danger.markdown-alert-warning .markdown-alert-tip::before,.danger.markdown-alert-important .markdown-alert-tip::before,.danger.markdown-alert-tip .alert-icon,.danger.markdown-alert-tip .markdown-alert-caution::before,.danger.markdown-alert-tip .markdown-alert-warning::before,.danger.markdown-alert-tip .markdown-alert-important::before,.danger.markdown-alert-tip .markdown-alert-tip::before,.alert.danger .markdown-alert-note::before,.danger.markdown-alert-caution .markdown-alert-note::before,.danger.markdown-alert-warning .markdown-alert-note::before,.danger.markdown-alert-important .markdown-alert-note::before,.danger.markdown-alert-tip .markdown-alert-note::before,.danger.markdown-alert-note .alert-icon,.danger.markdown-alert-note .markdown-alert-caution::before,.danger.markdown-alert-note .markdown-alert-warning::before,.danger.markdown-alert-note .markdown-alert-important::before,.danger.markdown-alert-note .markdown-alert-tip::before,.danger.markdown-alert-note .markdown-alert-note::before{background-color:var(--alert-danger-border)}.markdown-alert-note{border-color:var(--alert-note-border);background-color:color-mix(in srgb, var(--alert-note-bg) 15%, rgba(0,0,0,0))}.markdown-alert-note::before{content:"";background-color:var(--alert-note-border);margin-inline-start:25px}.markdown-alert-note>p{margin-inline-start:unset}.markdown-alert-note>p::before{content:"NOTE";color:var(--alert-note-border);margin-block-end:1rem}.markdown-alert-note>p>code{background-color:var(--alert-note-code)}.markdown-alert-note a{color:var(--alert-note-border)}.markdown-alert-note a code{background-color:var(--alert-note-bg)}.markdown-alert-tip{border-color:var(--alert-tip-border);background-color:color-mix(in srgb, var(--alert-tip-bg) 15%, rgba(0,0,0,0))}.markdown-alert-tip::before{content:"";background-color:var(--alert-tip-border);margin-inline-start:25px}.markdown-alert-tip>p{margin-inline-start:unset}.markdown-alert-tip>p::before{content:"TIP";color:var(--alert-tip-border);margin-block-end:1rem}.markdown-alert-tip>p>code{background-color:var(--alert-tip-code)}.markdown-alert-tip a{color:var(--alert-tip-border)}.markdown-alert-tip a code{background-color:var(--alert-tip-bg)}.markdown-alert-important{border-color:var(--alert-important-border);background-color:color-mix(in srgb, var(--alert-important-bg) 15%, rgba(0,0,0,0))}.markdown-alert-important::before{content:"";background-color:var(--alert-important-border);margin-inline-start:25px}.markdown-alert-important>p{margin-inline-start:unset}.markdown-alert-important>p::before{content:"IMPORTANT";color:var(--alert-important-border);margin-block-end:1rem}.markdown-alert-important>p>code{background-color:var(--alert-important-code)}.markdown-alert-important a{color:var(--alert-important-border)}.markdown-alert-important a code{background-color:var(--alert-important-bg)}.markdown-alert-warning{border-color:var(--alert-warning-border);background-color:color-mix(in srgb, var(--alert-warning-bg) 15%, rgba(0,0,0,0))}.markdown-alert-warning::before{content:"";background-color:var(--alert-warning-border);margin-inline-start:25px}.markdown-alert-warning>p{margin-inline-start:unset}.markdown-alert-warning>p::before{content:"WARNING";color:var(--alert-warning-border);margin-block-end:1rem}.markdown-alert-warning>p>code{background-color:var(--alert-warning-code)}.markdown-alert-warning a{color:var(--alert-warning-border)}.markdown-alert-warning a code{background-color:var(--alert-warning-bg)}.markdown-alert-caution{border-color:var(--alert-caution-border);background-color:color-mix(in srgb, var(--alert-caution-bg) 15%, rgba(0,0,0,0))}.markdown-alert-caution::before{content:"";background-color:var(--alert-caution-border);margin-inline-start:25px}.markdown-alert-caution>p{margin-inline-start:unset}.markdown-alert-caution>p::before{content:"CAUTION";color:var(--alert-caution-border);margin-block-end:1rem}.markdown-alert-caution>p>code{background-color:var(--alert-caution-code)}.markdown-alert-caution a{color:var(--alert-caution-border)}.markdown-alert-caution a code{background-color:var(--alert-caution-bg)}figure.mastodon-post{position:relative;border:1px solid var(--accent-color);margin:0;padding:60px 25px 25px}figure.mastodon-post::before{content:"> From Mastodon:";position:absolute;top:20px;left:20px;display:block;color:var(--accent-color);font-weight:bold}figure.mastodon-post blockquote{padding:unset;border:unset;overflow-wrap:anywhere}figure.mastodon-post blockquote::before{content:none}figure.mastodon-post figcaption{margin-top:25px}.references-list p{text-indent:-2.4rem;margin-inline-start:2.4rem}.wide-container{margin:0}@media (max-width: 684px){.wide-container{overflow-x:auto}}.main-menu-items{position:relative}.main-menu-items .theme-selector{position:relative;margin-left:auto}.main-menu-items .theme-selector .theme-trigger{text-decoration:none;cursor:pointer;padding:2px 4px;border-radius:3px;transition:all .15s ease;color:var(--text-color)}[data-theme=solar-flare] .main-menu-items .theme-selector .theme-trigger{color:#1a1a1a;background:rgba(26,26,26,.05)}[data-theme=solar-flare] .main-menu-items .theme-selector .theme-trigger:hover{background:rgba(255,69,0,.1);color:#ff4500}[data-theme=oled-abyss] .main-menu-items .theme-selector .theme-trigger{color:#fff}[data-theme=oled-abyss] .main-menu-items .theme-selector .theme-trigger:hover{color:#00d4ff}.main-menu-items .theme-selector .theme-trigger:hover{color:var(--accent-color)}.main-menu-items .theme-selector .theme-dropdown{position:absolute;top:100%;right:0;z-index:100;display:none;min-width:160px;margin:0;padding:10px;list-style:none;background:#2a2a2a;border:2px solid var(--accent-color);box-shadow:0 10px color-mix(in srgb, var(--accent-color) 70%, rgba(0,0,0,0)),-10px 10px color-mix(in srgb, var(--accent-color) 70%, rgba(0,0,0,0)),10px 10px color-mix(in srgb, var(--accent-color) 70%, rgba(0,0,0,0))}.main-menu-items .theme-selector .theme-dropdown.show{display:block}.main-menu-items .theme-selector .theme-dropdown li{margin:0}.main-menu-items .theme-selector .theme-dropdown a{display:block;padding:5px 8px;color:#e0e0e0;text-decoration:none;transition:all .15s ease;border-radius:3px}.main-menu-items .theme-selector .theme-dropdown a:hover{background:color-mix(in srgb, var(--accent-color) 15%, rgba(0,0,0,0));color:#fff}.main-menu-items .theme-selector .theme-dropdown a.current{color:var(--accent-color);background:color-mix(in srgb, var(--accent-color) 10%, rgba(0,0,0,0));font-weight:bold}.main-menu-items .theme-selector .theme-dropdown a.current::before{content:"โ†’ "}@media (max-width: 684px){.main-menu-items .theme-selector .theme-dropdown{position:static;margin:10px 0 0 0;box-shadow:none;border:1px solid var(--accent-color)}.main-menu-items .theme-selector .theme-dropdown.show{display:block}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}
+214
public/cv/index.html
···
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + 4 + <head> 5 + <meta charset="utf-8"> 6 + <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src-attr 'unsafe-inline'; img-src 'self' data: www.w3.org"> 8 + 9 + <title>My CV | guillermo serrahima</title> 10 + 11 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 12 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 13 + <link rel="stylesheet" href="https://vylion.com/css/style.css?h=22b8cbf1b9d367db5ee6"> 14 + <script src="https://vylion.com/js/auto-close-popover-on-resize.js?h=4ef87d6fc7b98b22e044" defer></script> 15 + <script src="https://vylion.com/js/copy-code-to-clipboard.js?h=6aac77c47d552a0ac847" defer></script> 16 + 17 + <link rel="canonical" href="https://vylion.com/cv/"> 18 + 19 + <meta name="author" content="Guillermo Serrahima"> 20 + <meta name="description" content="Skills and previous experience"> 21 + <meta name="robots" content="index, follow"> 22 + <meta name="theme-color" content="#211f1a"> 23 + <meta name="color-scheme" content="dark"> 24 + 25 + <meta property="og:title" content="My CV"> 26 + <meta property="og:type" content="article"> 27 + <meta property="og:url" content="https://vylion.com/cv/"> 28 + <meta property="og:description" content="Skills and previous experience"> 29 + <meta property="og:site_name" content="guillermo serrahima"> 30 + <meta property="og:updated_time" content="2025-12-30T22:59:21.686383447+01:00"> 31 + <meta name="fediverse:creator" content="@me.vylion.com@bsky.brid.gy"> 32 + </head> 33 + 34 + <body class="layout-center"> 35 + <header class="header"> 36 + <div class="header-container"> 37 + <span class="header-logo-container"> 38 + <a href="https://vylion.com"> 39 + <span class="logo">guillermo serrahima</span> 40 + </a> 41 + </span> 42 + </div> 43 + 44 + <!-- translations_list.html --> 45 + 46 + 47 + 48 + 49 + 50 + <nav class="main-menu" aria-label="Translations"> 51 + <a class="skip-to-content" href="#main">Skip to main content</a> 52 + <button class="main-menu-dropdown-button" popovertarget="nav-menu">Menu</button> 53 + <ul id="nav-menu" class="main-menu-items" aria-label="Site Navigation" popover> 54 + 55 + 56 + 57 + 58 + 59 + <li><a href="https:&#x2F;&#x2F;vylion.com&#x2F;es&#x2F;cv&#x2F;">ES</a></li> 60 + 61 + 62 + 63 + </ul> 64 + </nav> 65 + 66 + </header> 67 + <main id="main"> 68 + <article class="post content"> 69 + <header> 70 + <h1 class="post-title"> 71 + <a href="https://vylion.com/cv/">My CV</a> 72 + </h1> 73 + <ul class="post-meta hidden"> 74 + </ul> 75 + </header> 76 + 77 + <h1 id="who-am-i">Who am I</h1> 78 + <p>I am Guillermo Serrahima, a Software Engineer from the area of Barcelona, where I currently live. I graduated from the <a href="https://www.upc.edu/en">Polytechnic University of Catalonia</a> with a <code>Degree in Informatics Engineering</code> in 2018.</p> 79 + <p>I am most comfortable when I am working with <code>C++</code>, <code>Java</code>, <code>Python</code> and <code>Rust</code> code. I am familiar with <code>Git</code>, <code>Linux</code>, and the command line. In my day to day I use <strong>Arch Linux</strong> as my main <abbr title="Operating System">OS</abbr>.</p> 80 + <p>In addition, I have worked in the past with other languages like <code>Golang</code>, <code>C</code>, <code>C#</code>. I have worked on projects that used <code>PostgreSQL</code>, and I maintain <code>SQLite</code> and <code>MySQL</code> databases on my personal servers (depending on the scope.) I have used testing frameworks like <code>GoogleTest</code> and <code>Pytest</code>, and used CI/CD pipelines like <code>Jenkins</code> and <code>GitHub CI/CD</code>. I also regularly use <code>Docker</code> containers on both a profesional environment and my personal servers.</p> 81 + <h1 id="languages">Languages</h1> 82 + <p>I speak <code>Spanish</code> and <code>Catalan</code> natively, and I hold and have used a professional level of <code>English</code> on all my job positions.</p> 83 + <h1 id="previous-experience">Previous Experience</h1> 84 + <h3 id="ansys-now-part-of-synopsys">Ansys (now part of Synopsys)</h3> 85 + <ul> 86 + <li>Location: Madrid (remote)</li> 87 + <li>Position: R&amp;D Engineer</li> 88 + <li>Projects: 89 + <ul> 90 + <li>Developing a software tool on Python, to allow configuration of physics simuations using <a href="https://www.synopsys.com/glossary/what-is-model-based-design.html">model-based design</a> by clients with no code knowledge required, by way of a drag-and-drop interface.</li> 91 + <li>Refactoring a Dash Mantine wrapper library for Python, with the goal of open-sourcing said library.</li> 92 + </ul> 93 + </li> 94 + <li>Tools: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows</li> 95 + <li>Period: 2024 Aug. - 2025 Nov.</li> 96 + </ul> 97 + <h3 id="verbio-now-verbio-by-capacity">Verbio (now Verbio by Capacity)</h3> 98 + <ul> 99 + <li>Location: Barcelona (hybrid)</li> 100 + <li>Position: Backend Developer</li> 101 + <li>Projects: 102 + <ul> 103 + <li>Developing a GRPC API gateway for a SaaS product written in Rust during the initial stages of commercialization and growth of the product.</li> 104 + <li>Developing client tools written in Python for integrating AWS storage with the SaaS product.</li> 105 + <li>Developing Terraform deployment scripts for hosting the different components of the SaaS product on AWS infrastructure.</li> 106 + <li>Extension of the internal REST API and database backend for a Dashboard of product metrics.</li> 107 + </ul> 108 + </li> 109 + <li>Tools: Jetbrains CLion (with Rust plugin), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux</li> 110 + <li>Period: 2022 Jun. - 2024 Jul.</li> 111 + </ul> 112 + <h3 id="qad-dynasys">QAD DynaSys</h3> 113 + <ul> 114 + <li>Location: Barcelona (remote)</li> 115 + <li>Position: Software Developer</li> 116 + <li>Projects: 117 + <ul> 118 + <li>Refactoring of a C++ desktop app to allow servicing the desktop app as a SaaS product.</li> 119 + <li>Developing a C#-based frontend for interfacing with the C++ desktop app code.</li> 120 + </ul> 121 + </li> 122 + <li>Tools: Visual Studio, Windows</li> 123 + <li>Period: 2021 Jun. - 2022 Jun.</li> 124 + </ul> 125 + <h3 id="capitole-consulting">Capitole Consulting</h3> 126 + <ul> 127 + <li>Location: Barcelona (remote)</li> 128 + <li>Position: Software Developer</li> 129 + <li>Projects: 130 + <ul> 131 + <li>Developing a Python tool for the processing of analysis results and generation of PDF reports.</li> 132 + <li>Refactoring of the analysis results data structures for use in the previous tool, and improve maintainability.</li> 133 + <li>Fixing bugs and performance issues in a C++ application.</li> 134 + </ul> 135 + </li> 136 + <li>Period: 2021 Jan. - Jun.</li> 137 + </ul> 138 + <h3 id="hp-inc">HP Inc.</h3> 139 + <ul> 140 + <li>Location: Barcelona</li> 141 + <li>Position: Junior SDET (2018), Junior DevOps (2019, remote)</li> 142 + <li>Projects: 143 + <ul> 144 + <li>Developing C++ unit and integration tests.</li> 145 + <li>Maintaining several Jenkins instances as a private CI/CD pipeline solution.</li> 146 + </ul> 147 + </li> 148 + <li>Tools: GoogleTest, VS Code, Jenkins, Jira, Linux</li> 149 + <li>Period: Sep. 2018 - Sep. 2020</li> 150 + </ul> 151 + <h1 id="miscellanea">Miscellanea</h1> 152 + <p>I host several tiny personal servers (recycled computers at home + a cloud VPS) with services for my own needs. Some of the services I host are:</p> 153 + <ul> 154 + <li>An instance of <a href="https://nextcloud.com/">Nextcloud</a> (a cloud drive solution) at <a href="https://cloud.sepo.family">cloud.sepo.family</a></li> 155 + <li>An instance of <a href="https://goauthentik.io/">Authentik</a> (an <abbr title="Single Sign-On">SSO</abbr> solution) at <a href="https://login.sepo.family">login.sepo.family</a></li> 156 + <li>An instance of <a href="https://forgejo.org/">Forgejo</a> (a Git forge) at <a href="https://git.vylion.com">git.vylion.com</a></li> 157 + <li>Several private instances of <a href="https://www.portainer.io/">Portainer</a> <abbr title="Community Edition">CE</abbr> (one for each of my servers)</li> 158 + <li>A private instance of <a href="https://rustdesk.com/">RustDesk</a></li> 159 + <li>A <abbr title="Personal Data Server">PDS</abbr> <abbr title="Authenticated Transfer Protocol">ATProto</abbr> server for hosting my own <a href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">profile</a></li> 160 + <li>A knot server on <code>knot1.tngl.vylion.com</code> for <a href="https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">my own</a> <a href="https://tangled.org/">Tangled</a> repos</li> 161 + </ul> 162 + <p>I currently use a custom built keyboard running my own firmware developed in C++ with <a href="https://qmk.fm/">QMK</a>.</p> 163 + <p>In the past I have developed <a href="https://github.com/vylion/velascobot">a text Markov chain bot</a> for <a href="https://telegram.org/">Telegram</a>.</p> 164 + <p>I am also interested in learning JavaScript, TypeScript and React for fullstack development.</p> 165 + <h1 id="contact">Contact</h1> 166 + <p>I can be contacted by email at <code>gserrahima at mailbox.org</code>.</p> 167 + <p>I am currently living in <code>Esplugues de Llobregat</code>, in Spain, Europe.</p> 168 + <p>My phone number is <code>(+ ES Prefix) 637 911 884</code>. I can be contacted through:</p> 169 + <ul> 170 + <li>Calls</li> 171 + <li>WhatsApp</li> 172 + <li>Telegram</li> 173 + </ul> 174 + <blockquote class="markdown-alert-note"> 175 + <p>Please state your reason for contacting on your first message through WhatsApp or Telegram to avoid being filtered as spam.</p> 176 + </blockquote> 177 + 178 + </article> 179 + </main> 180 + <footer class="footer"> 181 + <address class="socials"> 182 + <ul> 183 + <li> 184 + <a class="social-link" rel="me" href="https://www.linkedin.com/in/ebkalderon" title="linkedin" aria-label="linkedin"> 185 + <svg role="img" aria-label="linkedin icon"> 186 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/linkedin.svg#icon" /> 187 + </svg> 188 + </a> 189 + </li> 190 + <li> 191 + <a class="social-link" rel="me" href="https://sk.vylion.com/@coldrange" title="mastodon" aria-label="mastodon"> 192 + <svg role="img" aria-label="mastodon icon"> 193 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/mastodon.svg#icon" /> 194 + </svg> 195 + </a> 196 + </li> 197 + <li> 198 + <a class="social-link" rel="me" href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd" title="bluesky" aria-label="bluesky"> 199 + <svg role="img" aria-label="bluesky icon"> 200 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/bluesky.svg#icon" /> 201 + </svg> 202 + </a> 203 + </li> 204 + </ul> 205 + </address> 206 + <p class="copyright"> 207 + <span>ยฉ <time>2025</time> Guillermo Serrahima</span> 208 + <span>Powered by <a href="https://www.getzola.org">Zola</a></span> 209 + <span>Theme by <a href="https://eyalkalderon.com">ebkalderon</a></span> 210 + </p> 211 + </footer> 212 + </body> 213 + 214 + </html>
+10
public/elasticlunr.min.js
···
··· 1 + /** 2 + * elasticlunr - http://weixsong.github.io 3 + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.6 4 + * 5 + * Copyright (C) 2017 Oliver Nightingale 6 + * Copyright (C) 2017 Wei Song 7 + * MIT Licensed 8 + * @license 9 + */ 10 + !function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u<s.length;u++){var a=s[u];r[a]=this.pipeline.run(t.tokenizer(e[a]))}var l={};for(var c in o){var d=r[c]||r.any;if(d){var f=this.fieldSearch(d,c,o),h=o[c].boost;for(var p in f)f[p]=f[p]*h;for(var p in f)p in l?l[p]+=f[p]:l[p]=f[p]}}var v,g=[];for(var p in l)v={ref:p,score:l[p]},this.documentStore.hasDoc(p)&&(v.doc=this.documentStore.getDoc(p)),g.push(v);return g.sort(function(e,t){return t.score-e.score}),g},t.Index.prototype.fieldSearch=function(e,t,n){var i=n[t].bool,o=n[t].expand,r=n[t].boost,s=null,u={};return 0!==r?(e.forEach(function(e){var n=[e];1==o&&(n=this.index[t].expandToken(e));var r={};n.forEach(function(n){var o=this.index[t].getDocs(n),a=this.idf(n,t);if(s&&"AND"==i){var l={};for(var c in s)c in o&&(l[c]=o[c]);o=l}n==e&&this.fieldSearchStats(u,n,o);for(var c in o){var d=this.index[t].getTermFrequency(n,c),f=this.documentStore.getFieldLength(c,t),h=1;0!=f&&(h=1/Math.sqrt(f));var p=1;n!=e&&(p=.15*(1-(n.length-e.length)/n.length));var v=d*a*h*p;c in r?r[c]+=v:r[c]=v}},this),s=this.mergeScores(s,r,i)},this),s=this.coordNorm(s,u,e.length)):void 0},t.Index.prototype.mergeScores=function(e,t,n){if(!e)return t;if("AND"==n){var i={};for(var o in t)o in e&&(i[o]=e[o]+t[o]);return i}for(var o in t)o in e?e[o]+=t[o]:e[o]=t[o];return e},t.Index.prototype.fieldSearchStats=function(e,t,n){for(var i in n)i in e?e[i].push(t):e[i]=[t]},t.Index.prototype.coordNorm=function(e,t,n){for(var i in e)if(i in t){var o=t[i].length;e[i]=e[i]*o/n}return e},t.Index.prototype.toJSON=function(){var e={};return this._fields.forEach(function(t){e[t]=this.index[t].toJSON()},this),{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),index:e,pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},t.DocumentStore=function(e){this._save=null===e||void 0===e?!0:e,this.docs={},this.docInfo={},this.length=0},t.DocumentStore.load=function(e){var t=new this;return t.length=e.length,t.docs=e.docs,t.docInfo=e.docInfo,t._save=e.save,t},t.DocumentStore.prototype.isDocStored=function(){return this._save},t.DocumentStore.prototype.addDoc=function(t,n){this.hasDoc(t)||this.length++,this.docs[t]=this._save===!0?e(n):null},t.DocumentStore.prototype.getDoc=function(e){return this.hasDoc(e)===!1?null:this.docs[e]},t.DocumentStore.prototype.hasDoc=function(e){return e in this.docs},t.DocumentStore.prototype.removeDoc=function(e){this.hasDoc(e)&&(delete this.docs[e],delete this.docInfo[e],this.length--)},t.DocumentStore.prototype.addFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&(this.docInfo[e]||(this.docInfo[e]={}),this.docInfo[e][t]=n)},t.DocumentStore.prototype.updateFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&this.addFieldLength(e,t,n)},t.DocumentStore.prototype.getFieldLength=function(e,t){return null===e||void 0===e?0:e in this.docs&&t in this.docInfo[e]?this.docInfo[e][t]:0},t.DocumentStore.prototype.toJSON=function(){return{docs:this.docs,docInfo:this.docInfo,length:this.length,save:this._save}},t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,u="^("+o+")?"+r+o+"("+r+")?$",a="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,c=new RegExp(s),d=new RegExp(a),f=new RegExp(u),h=new RegExp(l),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,x=new RegExp("([^aeiouylsz])\\1$"),w=new RegExp("^"+o+i+"[^aeiouwxy]$"),I=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,_=/^(.+?)e$/,P=/ll$/,k=new RegExp("^"+o+i+"[^aeiouwxy]$"),z=function(n){var i,o,r,s,u,a,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,u=v,s.test(n)?n=n.replace(s,"$1$2"):u.test(n)&&(n=n.replace(u,"$1$2")),s=g,u=m,s.test(n)){var z=s.exec(n);s=c,s.test(z[1])&&(s=y,n=n.replace(s,""))}else if(u.test(n)){var z=u.exec(n);i=z[1],u=h,u.test(i)&&(n=i,u=S,a=x,l=w,u.test(n)?n+="e":a.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=I,s.test(n)){var z=s.exec(n);i=z[1],n=i+"i"}if(s=b,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=c,s.test(i)&&(n=i+e[o])}if(s=E,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=c,s.test(i)&&(n=i+t[o])}if(s=D,u=F,s.test(n)){var z=s.exec(n);i=z[1],s=d,s.test(i)&&(n=i)}else if(u.test(n)){var z=u.exec(n);i=z[1]+z[2],u=d,u.test(i)&&(n=i)}if(s=_,s.test(n)){var z=s.exec(n);i=z[1],s=d,u=f,a=k,(s.test(i)||u.test(i)&&!a.test(i))&&(n=i)}return s=P,u=d,s.test(n)&&u.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return z}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==!0?e:void 0},t.clearStopWords=function(){t.stopWordFilter.stopWords={}},t.addStopWords=function(e){null!=e&&Array.isArray(e)!==!1&&e.forEach(function(e){t.stopWordFilter.stopWords[e]=!0},this)},t.resetStopWords=function(){t.stopWordFilter.stopWords=t.defaultStopWords},t.defaultStopWords={"":!0,a:!0,able:!0,about:!0,across:!0,after:!0,all:!0,almost:!0,also:!0,am:!0,among:!0,an:!0,and:!0,any:!0,are:!0,as:!0,at:!0,be:!0,because:!0,been:!0,but:!0,by:!0,can:!0,cannot:!0,could:!0,dear:!0,did:!0,"do":!0,does:!0,either:!0,"else":!0,ever:!0,every:!0,"for":!0,from:!0,get:!0,got:!0,had:!0,has:!0,have:!0,he:!0,her:!0,hers:!0,him:!0,his:!0,how:!0,however:!0,i:!0,"if":!0,"in":!0,into:!0,is:!0,it:!0,its:!0,just:!0,least:!0,let:!0,like:!0,likely:!0,may:!0,me:!0,might:!0,most:!0,must:!0,my:!0,neither:!0,no:!0,nor:!0,not:!0,of:!0,off:!0,often:!0,on:!0,only:!0,or:!0,other:!0,our:!0,own:!0,rather:!0,said:!0,say:!0,says:!0,she:!0,should:!0,since:!0,so:!0,some:!0,than:!0,that:!0,the:!0,their:!0,them:!0,then:!0,there:!0,these:!0,they:!0,"this":!0,tis:!0,to:!0,too:!0,twas:!0,us:!0,wants:!0,was:!0,we:!0,were:!0,what:!0,when:!0,where:!0,which:!0,"while":!0,who:!0,whom:!0,why:!0,will:!0,"with":!0,would:!0,yet:!0,you:!0,your:!0},t.stopWordFilter.stopWords=t.defaultStopWords,t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(e){if(null===e||void 0===e)throw new Error("token should not be undefined");return e.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.InvertedIndex=function(){this.root={docs:{},df:0}},t.InvertedIndex.load=function(e){var t=new this;return t.root=e.root,t},t.InvertedIndex.prototype.addToken=function(e,t,n){for(var n=n||this.root,i=0;i<=e.length-1;){var o=e[i];o in n||(n[o]={docs:{},df:0}),i+=1,n=n[o]}var r=t.ref;n.docs[r]?n.docs[r]={tf:t.tf}:(n.docs[r]={tf:t.tf},n.df+=1)},t.InvertedIndex.prototype.hasToken=function(e){if(!e)return!1;for(var t=this.root,n=0;n<e.length;n++){if(!t[e[n]])return!1;t=t[e[n]]}return!0},t.InvertedIndex.prototype.getNode=function(e){if(!e)return null;for(var t=this.root,n=0;n<e.length;n++){if(!t[e[n]])return null;t=t[e[n]]}return t},t.InvertedIndex.prototype.getDocs=function(e){var t=this.getNode(e);return null==t?{}:t.docs},t.InvertedIndex.prototype.getTermFrequency=function(e,t){var n=this.getNode(e);return null==n?0:t in n.docs?n.docs[t].tf:0},t.InvertedIndex.prototype.getDocFreq=function(e){var t=this.getNode(e);return null==t?0:t.df},t.InvertedIndex.prototype.removeToken=function(e,t){if(e){var n=this.getNode(e);null!=n&&t in n.docs&&(delete n.docs[t],n.df-=1)}},t.InvertedIndex.prototype.expandToken=function(e,t,n){if(null==e||""==e)return[];var t=t||[];if(void 0==n&&(n=this.getNode(e),null==n))return t;n.df>0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e<arguments.length;e++)t=arguments[e],~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t);this.length=this.elements.length},lunr.SortedSet.prototype.toArray=function(){return this.elements.slice()},lunr.SortedSet.prototype.map=function(e,t){return this.elements.map(e,t)},lunr.SortedSet.prototype.forEach=function(e,t){return this.elements.forEach(e,t)},lunr.SortedSet.prototype.indexOf=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]<u[i]?n++:s[n]>u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o<r.length;o++)i.add(r[o]);return i},lunr.SortedSet.prototype.toJSON=function(){return this.toArray()},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.elasticlunr=t()}(this,function(){return t})}();
-202
public/en/404.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - 5 - <title>404 Page not found :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/en/404.html" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="en" /> 44 - <meta property="og:type" content="website" /> 45 - <meta property="og:title" content="404 Page not found"> 46 - <meta property="og:description" content="" /> 47 - <meta property="og:url" content="https://vylion.com/en/404.html" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - </head> 74 - <body class="blue"> 75 - 76 - 77 - 78 - 79 - <div class="container center headings--one-size"> 80 - 81 - <header class="header"> 82 - <div class="header__inner"> 83 - <div class="header__logo"> 84 - <a href="https://vylion.com/"> 85 - <div class="logo"> 86 - guillermo serrahima 87 - </div> 88 - </a> 89 - 90 - </div> 91 - 92 - <ul class="menu menu--mobile"> 93 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 94 - <li> 95 - <ul class="menu__dropdown"> 96 - 97 - 98 - <li><a href="/en/cv">rรฉsumรฉ</a></li> 99 - 100 - 101 - 102 - <li><a href="https://git.vylion.com/vylion">projects</a></li> 103 - 104 - 105 - 106 - <hr /> 107 - 108 - <li> 109 - <a href="https://vylion.com/en/">English</a> 110 - </li> 111 - 112 - <li> 113 - <a href="https://vylion.com/es/">Espaรฑol</a> 114 - </li> 115 - 116 - 117 - </ul> 118 - </li> 119 - </ul> 120 - 121 - 122 - 123 - <ul class="menu menu--desktop menu--language-selector"> 124 - <li class="menu__trigger">English&nbsp;โ–พ</li> 125 - <li> 126 - <ul class="menu__dropdown"> 127 - 128 - <li><a href="https://vylion.com/en/">English</a></li> 129 - 130 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 131 - 132 - </ul> 133 - </li> 134 - </ul> 135 - 136 - 137 - </div> 138 - 139 - <nav class="navigation-menu"> 140 - <ul class="navigation-menu__inner menu--desktop"> 141 - 142 - 143 - 144 - <li><a href="/en/cv" >rรฉsumรฉ</a></li> 145 - 146 - 147 - 148 - <li><a href="https://git.vylion.com/vylion" >projects</a></li> 149 - 150 - 151 - 152 - </ul> 153 - </nav> 154 - 155 - 156 - </header> 157 - 158 - 159 - <div class="content"> 160 - 161 - <div class="post"> 162 - <h1 class="post-title">404 โ€” Page not found...</h1> 163 - 164 - <div class="post-content"> 165 - <a href="https://vylion.com/">Back to home page&nbsp;โ†’</a> 166 - </div> 167 - 168 - </div> 169 - 170 - </div> 171 - 172 - 173 - <footer class="footer"> 174 - <div class="footer__inner"> 175 - 176 - <div class="copyright"> 177 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 178 - 179 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 180 - </div> 181 - </div> 182 - </footer> 183 - 184 - 185 - 186 - 187 - 188 - 189 - <script type="text/javascript" src="/bundle.min.js"></script> 190 - 191 - 192 - 193 - 194 - 195 - 196 - 197 - 198 - 199 - </div> 200 - 201 - </body> 202 - </html>
···
-204
public/en/categories/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - 5 - <title>Categories :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/en/categories/" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="en" /> 44 - <meta property="og:type" content="website" /> 45 - <meta property="og:title" content="Categories"> 46 - <meta property="og:description" content="" /> 47 - <meta property="og:url" content="https://vylion.com/en/categories/" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - <link href="/en/categories/index.xml" rel="alternate" type="application/rss+xml" title="Guillermo Serrahima" /> 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - </head> 76 - <body class="blue"> 77 - 78 - 79 - 80 - 81 - <div class="container center headings--one-size"> 82 - 83 - <header class="header"> 84 - <div class="header__inner"> 85 - <div class="header__logo"> 86 - <a href="https://vylion.com/"> 87 - <div class="logo"> 88 - guillermo serrahima 89 - </div> 90 - </a> 91 - 92 - </div> 93 - 94 - <ul class="menu menu--mobile"> 95 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 96 - <li> 97 - <ul class="menu__dropdown"> 98 - 99 - 100 - <li><a href="/en/cv">rรฉsumรฉ</a></li> 101 - 102 - 103 - 104 - <li><a href="https://git.vylion.com/vylion">projects</a></li> 105 - 106 - 107 - 108 - <hr /> 109 - 110 - <li> 111 - <a href="https://vylion.com/en/">English</a> 112 - </li> 113 - 114 - <li> 115 - <a href="https://vylion.com/es/">Espaรฑol</a> 116 - </li> 117 - 118 - 119 - </ul> 120 - </li> 121 - </ul> 122 - 123 - 124 - 125 - <ul class="menu menu--desktop menu--language-selector"> 126 - <li class="menu__trigger">English&nbsp;โ–พ</li> 127 - <li> 128 - <ul class="menu__dropdown"> 129 - 130 - <li><a href="https://vylion.com/en/">English</a></li> 131 - 132 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 133 - 134 - </ul> 135 - </li> 136 - </ul> 137 - 138 - 139 - </div> 140 - 141 - <nav class="navigation-menu"> 142 - <ul class="navigation-menu__inner menu--desktop"> 143 - 144 - 145 - 146 - <li><a href="/en/cv" >rรฉsumรฉ</a></li> 147 - 148 - 149 - 150 - <li><a href="https://git.vylion.com/vylion" >projects</a></li> 151 - 152 - 153 - 154 - </ul> 155 - </nav> 156 - 157 - 158 - </header> 159 - 160 - 161 - <div class="content"> 162 - 163 - <div class="terms"> 164 - <h1>Categories</h1> 165 - 166 - <ul> 167 - 168 - 169 - </ul> 170 - </div> 171 - 172 - </div> 173 - 174 - 175 - <footer class="footer"> 176 - <div class="footer__inner"> 177 - 178 - <div class="copyright"> 179 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 180 - 181 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 182 - </div> 183 - </div> 184 - </footer> 185 - 186 - 187 - 188 - 189 - 190 - 191 - <script type="text/javascript" src="/bundle.min.js"></script> 192 - 193 - 194 - 195 - 196 - 197 - 198 - 199 - 200 - 201 - </div> 202 - 203 - </body> 204 - </html>
···
-10
public/en/categories/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Categories on Guillermo Serrahima</title> 5 - <link>https://vylion.com/en/categories/</link> 6 - <description>Recent content in Categories on Guillermo Serrahima</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>en-us</language><atom:link href="https://vylion.com/en/categories/index.xml" rel="self" type="application/rss+xml" /> 9 - </channel> 10 - </rss>
···
-321
public/en/cv/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - 5 - <title>Rรฉsumรฉ :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="Skills and previous experience" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/en/cv/" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="en" /> 44 - <meta property="og:type" content="article" /> 45 - <meta property="og:title" content="Rรฉsumรฉ"> 46 - <meta property="og:description" content="Skills and previous experience" /> 47 - <meta property="og:url" content="https://vylion.com/en/cv/" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - </head> 74 - <body class="blue"> 75 - 76 - 77 - 78 - 79 - <div class="container center headings--one-size"> 80 - 81 - <header class="header"> 82 - <div class="header__inner"> 83 - <div class="header__logo"> 84 - <a href="https://vylion.com/"> 85 - <div class="logo"> 86 - guillermo serrahima 87 - </div> 88 - </a> 89 - 90 - </div> 91 - 92 - <ul class="menu menu--mobile"> 93 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 94 - <li> 95 - <ul class="menu__dropdown"> 96 - 97 - 98 - <li><a href="/en/cv">rรฉsumรฉ</a></li> 99 - 100 - 101 - 102 - <li><a href="https://git.vylion.com/vylion">projects</a></li> 103 - 104 - 105 - 106 - <hr /> 107 - 108 - <li> 109 - <a href="https://vylion.com/en/">English</a> 110 - </li> 111 - 112 - <li> 113 - <a href="https://vylion.com/es/">Espaรฑol</a> 114 - </li> 115 - 116 - 117 - </ul> 118 - </li> 119 - </ul> 120 - 121 - 122 - 123 - <ul class="menu menu--desktop menu--language-selector"> 124 - <li class="menu__trigger">English&nbsp;โ–พ</li> 125 - <li> 126 - <ul class="menu__dropdown"> 127 - 128 - <li><a href="https://vylion.com/en/">English</a></li> 129 - 130 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 131 - 132 - </ul> 133 - </li> 134 - </ul> 135 - 136 - 137 - </div> 138 - 139 - <nav class="navigation-menu"> 140 - <ul class="navigation-menu__inner menu--desktop"> 141 - 142 - 143 - 144 - <li><a href="/en/cv" >rรฉsumรฉ</a></li> 145 - 146 - 147 - 148 - <li><a href="https://git.vylion.com/vylion" >projects</a></li> 149 - 150 - 151 - 152 - </ul> 153 - </nav> 154 - 155 - 156 - </header> 157 - 158 - 159 - <div class="content"> 160 - 161 - <article class="post"> 162 - <h1 class="post-title"> 163 - <a href="https://vylion.com/en/cv/">Rรฉsumรฉ</a> 164 - </h1> 165 - <div class="post-meta"> 166 - 167 - </div> 168 - 169 - 170 - 171 - 172 - 173 - 174 - 175 - 176 - <div class="post-content"><div> 177 - <h1 id="who-am-i">Who am I<a href="#who-am-i" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 178 - <p>I am Guillermo Serrahima, a Software Engineer from the area of Barcelona, where I currently live. I graduated from the <a href="https://www.upc.edu/en">Polytechnic University of Catalonia</a> with a <code>Degree in Informatics Engineering</code> in 2018.</p> 179 - <p>I am most comfortable when I am working with <code>C++</code>, <code>Java</code>, <code>Python</code> and <code>Rust</code> code. I am familiar with <code>Git</code>, <code>Linux</code>, and the command line. In my day to day I use <strong>Arch Linux</strong> as my main <abbr title="Operating System">OS</abbr>.</p> 180 - <p>In addition, I have worked in the past with other languages like <code>Golang</code>, <code>C</code>, <code>C#</code>. I have worked on projects that used <code>PostgreSQL</code>, and I maintain <code>SQLite</code> and <code>MySQL</code> databases on my personal servers (depending on the scope.) I have used testing frameworks like <code>GoogleTest</code> and <code>Pytest</code>, and used CI/CD pipelines like <code>Jenkins</code> and <code>GitHub CI/CD</code>. I also regularly use <code>Docker</code> containers on both a profesional environment and my personal servers.</p> 181 - <h1 id="languages">Languages<a href="#languages" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 182 - <p>I speak <code>Spanish</code> and <code>Catalan</code> natively, and I hold and have used a professional level of <code>English</code> on all my job positions.</p> 183 - <h1 id="previous-experience">Previous Experience<a href="#previous-experience" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 184 - <h3 id="ansys-now-part-of-synopsys">Ansys (now part of Synopsys)<a href="#ansys-now-part-of-synopsys" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 185 - <ul> 186 - <li>Location: Madrid (remote)</li> 187 - <li>Position: R&amp;D Engineer</li> 188 - <li>Projects: 189 - <ul> 190 - <li>Developing a software tool on Python, to allow configuration of physics simuations using <a href="https://www.synopsys.com/glossary/what-is-model-based-design.html">model-based design</a> by clients with no code knowledge required, by way of a drag-and-drop interface.</li> 191 - <li>Refactoring a Dash Mantine wrapper library for Python, with the goal of open-sourcing said library.</li> 192 - </ul> 193 - </li> 194 - <li>Tools: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows</li> 195 - <li>Period: 2024 Aug. - 2025 Nov.</li> 196 - </ul> 197 - <h3 id="verbio-now-verbio-by-capacity">Verbio (now Verbio by Capacity)<a href="#verbio-now-verbio-by-capacity" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 198 - <ul> 199 - <li>Location: Barcelona (hybrid)</li> 200 - <li>Position: Backend Developer</li> 201 - <li>Projects: 202 - <ul> 203 - <li>Developing a GRPC API gateway for a SaaS product written in Rust during the initial stages of commercialization and growth of the product.</li> 204 - <li>Developing client tools written in Python for integrating AWS storage with the SaaS product.</li> 205 - <li>Developing Terraform deployment scripts for hosting the different components of the SaaS product on AWS infrastructure.</li> 206 - <li>Extension of the internal REST API and database backend for a Dashboard of product metrics.</li> 207 - </ul> 208 - </li> 209 - <li>Tools: Jetbrains CLion (with Rust plugin), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux</li> 210 - <li>Period: 2022 Jun. - 2024 Jul.</li> 211 - </ul> 212 - <h3 id="qad-dynasys">QAD DynaSys<a href="#qad-dynasys" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 213 - <ul> 214 - <li>Location: Barcelona (remote)</li> 215 - <li>Position: Software Developer</li> 216 - <li>Projects: 217 - <ul> 218 - <li>Refactoring of a C++ desktop app to allow servicing the desktop app as a SaaS product.</li> 219 - <li>Developing a C#-based frontend for interfacing with the C++ desktop app code.</li> 220 - </ul> 221 - </li> 222 - <li>Tools: Visual Studio, Windows</li> 223 - <li>Period: 2021 Jun. - 2022 Jun.</li> 224 - </ul> 225 - <h3 id="capitole-consulting">Capitole Consulting<a href="#capitole-consulting" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 226 - <ul> 227 - <li>Location: Barcelona (remote)</li> 228 - <li>Position: Software Developer</li> 229 - <li>Projects: 230 - <ul> 231 - <li>Developing a Python tool for the processing of analysis results and generation of PDF reports.</li> 232 - <li>Refactoring of the analysis results data structures for use in the previous tool, and improve maintainability.</li> 233 - <li>Fixing bugs and performance issues in a C++ application.</li> 234 - </ul> 235 - </li> 236 - <li>Period: 2021 Jan. - Jun.</li> 237 - </ul> 238 - <h3 id="hp-inc">HP Inc.<a href="#hp-inc" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 239 - <ul> 240 - <li>Location: Barcelona</li> 241 - <li>Position: Junior SDET (2018), Junior DevOps (2019, remote)</li> 242 - <li>Projects: 243 - <ul> 244 - <li>Developing C++ unit and integration tests.</li> 245 - <li>Maintaining several Jenkins instances as a private CI/CD pipeline solution.</li> 246 - </ul> 247 - </li> 248 - <li>Tools: GoogleTest, VS Code, Jenkins, Jira, Linux</li> 249 - <li>Period: Sep. 2018 - Sep. 2020</li> 250 - </ul> 251 - <h1 id="miscellanea">Miscellanea<a href="#miscellanea" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 252 - <p>I host several tiny personal servers (recycled computers at home + a cloud VPS) with services for my own needs. Some of the services I host are:</p> 253 - <ul> 254 - <li>An instance of <a href="https://nextcloud.com/">Nextcloud</a> (a cloud drive solution) at <a href="https://cloud.sepo.family">cloud.sepo.family</a></li> 255 - <li>An instance of <a href="https://goauthentik.io/">Authentik</a> (an <abbr title="Single Sign-On">SSO</abbr> solution) at <a href="https://login.sepo.family">login.sepo.family</a></li> 256 - <li>An instance of <a href="https://forgejo.org/">Forgejo</a> (a Git forge) at <a href="https://git.vylion.com">git.vylion.com</a></li> 257 - <li>Several private instances of <a href="https://www.portainer.io/">Portainer</a> <abbr title="Community Edition">CE</abbr> (one for each of my servers)</li> 258 - <li>A private instance of <a href="https://rustdesk.com/">RustDesk</a></li> 259 - <li>A <abbr title="Personal Data Server">PDS</abbr> <abbr title="Authenticated Transfer Protocol">ATProto</abbr> server for hosting my own <a href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">profile</a></li> 260 - <li>A knot server on <code>knot1.tngl.vylion.com</code> for <a href="https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">my own</a> <a href="https://tangled.org/">Tangled</a> repos</li> 261 - </ul> 262 - <p>I currently use a custom built keyboard running my own firmware developed in C++ with <a href="https://qmk.fm/">QMK</a>.</p> 263 - <p>In the past I have developed <a href="https://github.com/vylion/velascobot">a text Markov chain bot</a> for <a href="https://telegram.org/">Telegram</a>.</p> 264 - <p>I am also interested in learning JavaScript, TypeScript and React for fullstack development.</p> 265 - <h1 id="contact">Contact<a href="#contact" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 266 - <p>I can be contacted by email at <code>gserrahima at mailbox.org</code>.</p> 267 - <p>I am currently living in <code>Esplugues de Llobregat</code>, in Spain, Europe.</p> 268 - <p>My phone number is <code>(+ ES Prefix) 637 911 884</code>. I can be contacted through:</p> 269 - <ul> 270 - <li>Calls</li> 271 - <li>WhatsApp</li> 272 - <li>Telegram</li> 273 - </ul> 274 - <blockquote> 275 - <p>[!NOTE] 276 - Please state your reason for contacting on your first message through WhatsApp or Telegram to avoid being filtered as spam.</p> 277 - </blockquote> 278 - 279 - </div></div> 280 - 281 - 282 - 283 - 284 - 285 - 286 - 287 - </article> 288 - 289 - </div> 290 - 291 - 292 - <footer class="footer"> 293 - <div class="footer__inner"> 294 - 295 - <div class="copyright"> 296 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 297 - 298 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 299 - </div> 300 - </div> 301 - </footer> 302 - 303 - 304 - 305 - 306 - 307 - 308 - <script type="text/javascript" src="/bundle.min.js"></script> 309 - 310 - 311 - 312 - 313 - 314 - 315 - 316 - 317 - 318 - </div> 319 - 320 - </body> 321 - </html>
···
-224
public/en/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta name="generator" content="Hugo 0.154.3"> 5 - 6 - <title>Guillermo Serrahima</title> 7 - 8 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 9 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 10 - <meta name="description" content="" /> 11 - <meta name="keywords" content="" /> 12 - 13 - <meta name="robots" content="noodp" /> 14 - 15 - <link rel="canonical" href="https://vylion.com/en/" /> 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 37 - 38 - 39 - 40 - <meta name="twitter:card" content="summary" /> 41 - 42 - 43 - 44 - <meta property="og:locale" content="en" /> 45 - <meta property="og:type" content="website" /> 46 - <meta property="og:title" content="Guillermo Serrahima"> 47 - <meta property="og:description" content="" /> 48 - <meta property="og:url" content="https://vylion.com/en/" /> 49 - <meta property="og:site_name" content="Guillermo Serrahima" /> 50 - 51 - 52 - <meta property="og:image" content="https://vylion.com/favicon.png"> 53 - 54 - 55 - <meta property="og:image:width" content="1200"> 56 - <meta property="og:image:height" content="627"> 57 - 58 - 59 - 60 - 61 - 62 - <link href="/en/index.xml" rel="alternate" type="application/rss+xml" title="Guillermo Serrahima" /> 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - 76 - </head> 77 - <body class="blue"> 78 - 79 - 80 - 81 - 82 - <div class="container center headings--one-size"> 83 - 84 - <header class="header"> 85 - <div class="header__inner"> 86 - <div class="header__logo"> 87 - <a href="https://vylion.com/"> 88 - <div class="logo"> 89 - guillermo serrahima 90 - </div> 91 - </a> 92 - 93 - </div> 94 - 95 - <ul class="menu menu--mobile"> 96 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 97 - <li> 98 - <ul class="menu__dropdown"> 99 - 100 - 101 - <li><a href="/en/cv">rรฉsumรฉ</a></li> 102 - 103 - 104 - 105 - <li><a href="https://git.vylion.com/vylion">projects</a></li> 106 - 107 - 108 - 109 - <hr /> 110 - 111 - <li> 112 - <a href="https://vylion.com/en/">English</a> 113 - </li> 114 - 115 - <li> 116 - <a href="https://vylion.com/es/">Espaรฑol</a> 117 - </li> 118 - 119 - 120 - </ul> 121 - </li> 122 - </ul> 123 - 124 - 125 - 126 - <ul class="menu menu--desktop menu--language-selector"> 127 - <li class="menu__trigger">English&nbsp;โ–พ</li> 128 - <li> 129 - <ul class="menu__dropdown"> 130 - 131 - <li><a href="https://vylion.com/en/">English</a></li> 132 - 133 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 134 - 135 - </ul> 136 - </li> 137 - </ul> 138 - 139 - 140 - </div> 141 - 142 - <nav class="navigation-menu"> 143 - <ul class="navigation-menu__inner menu--desktop"> 144 - 145 - 146 - 147 - <li><a href="/en/cv" >rรฉsumรฉ</a></li> 148 - 149 - 150 - 151 - <li><a href="https://git.vylion.com/vylion" >projects</a></li> 152 - 153 - 154 - 155 - </ul> 156 - </nav> 157 - 158 - 159 - </header> 160 - 161 - 162 - <div class="content"> 163 - 164 - 165 - <div class="index-content "> 166 - <p>Hello! I&rsquo;m Guillermo Serrahima, a Software Engineer from the area of Barcelona, Spain. This is my personal site.</p> 167 - <p>You can take a look at my <a href="https://vylion.com/en/cv/">rรฉsumรฉ</a>, or check out my <a href="https://git.vylion.com/vylion">projects</a>.</p> 168 - 169 - </div> 170 - 171 - <div class="posts"> 172 - 173 - 174 - 175 - 176 - 177 - 178 - 179 - 180 - 181 - 182 - 183 - <div class="pagination"> 184 - <div class="pagination__buttons"> 185 - 186 - 187 - </div> 188 - </div> 189 - 190 - </div> 191 - 192 - </div> 193 - 194 - 195 - <footer class="footer"> 196 - <div class="footer__inner"> 197 - 198 - <div class="copyright"> 199 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 200 - 201 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 202 - </div> 203 - </div> 204 - </footer> 205 - 206 - 207 - 208 - 209 - 210 - 211 - <script type="text/javascript" src="/bundle.min.js"></script> 212 - 213 - 214 - 215 - 216 - 217 - 218 - 219 - 220 - 221 - </div> 222 - 223 - </body> 224 - </html>
···
-123
public/en/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Home on Guillermo Serrahima</title> 5 - <link>https://vylion.com/en/</link> 6 - <description>Recent content in Home on Guillermo Serrahima</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>en-us</language><atom:link href="https://vylion.com/en/index.xml" rel="self" type="application/rss+xml" /> 9 - <item> 10 - <title>Rรฉsumรฉ</title> 11 - <link>https://vylion.com/en/cv/</link> 12 - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> 13 - 14 - <guid>https://vylion.com/en/cv/</guid> 15 - <description>&lt;h1 id=&#34;who-am-i&#34;&gt;Who am I&lt;/h1&gt; 16 - &lt;p&gt;I am Guillermo Serrahima, a Software Engineer from the area of Barcelona, where I currently live. I graduated from the &lt;a href=&#34;https://www.upc.edu/en&#34;&gt;Polytechnic University of Catalonia&lt;/a&gt; with a &lt;code&gt;Degree in Informatics Engineering&lt;/code&gt; in 2018.&lt;/p&gt; 17 - &lt;p&gt;I am most comfortable when I am working with &lt;code&gt;C++&lt;/code&gt;, &lt;code&gt;Java&lt;/code&gt;, &lt;code&gt;Python&lt;/code&gt; and &lt;code&gt;Rust&lt;/code&gt; code. I am familiar with &lt;code&gt;Git&lt;/code&gt;, &lt;code&gt;Linux&lt;/code&gt;, and the command line. In my day to day I use &lt;strong&gt;Arch Linux&lt;/strong&gt; as my main &lt;abbr title=&#34;Operating System&#34;&gt;OS&lt;/abbr&gt;.&lt;/p&gt;</description> 18 - <content>&lt;h1 id=&#34;who-am-i&#34;&gt;Who am I&lt;/h1&gt; 19 - &lt;p&gt;I am Guillermo Serrahima, a Software Engineer from the area of Barcelona, where I currently live. I graduated from the &lt;a href=&#34;https://www.upc.edu/en&#34;&gt;Polytechnic University of Catalonia&lt;/a&gt; with a &lt;code&gt;Degree in Informatics Engineering&lt;/code&gt; in 2018.&lt;/p&gt; 20 - &lt;p&gt;I am most comfortable when I am working with &lt;code&gt;C++&lt;/code&gt;, &lt;code&gt;Java&lt;/code&gt;, &lt;code&gt;Python&lt;/code&gt; and &lt;code&gt;Rust&lt;/code&gt; code. I am familiar with &lt;code&gt;Git&lt;/code&gt;, &lt;code&gt;Linux&lt;/code&gt;, and the command line. In my day to day I use &lt;strong&gt;Arch Linux&lt;/strong&gt; as my main &lt;abbr title=&#34;Operating System&#34;&gt;OS&lt;/abbr&gt;.&lt;/p&gt; 21 - &lt;p&gt;In addition, I have worked in the past with other languages like &lt;code&gt;Golang&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;C#&lt;/code&gt;. I have worked on projects that used &lt;code&gt;PostgreSQL&lt;/code&gt;, and I maintain &lt;code&gt;SQLite&lt;/code&gt; and &lt;code&gt;MySQL&lt;/code&gt; databases on my personal servers (depending on the scope.) I have used testing frameworks like &lt;code&gt;GoogleTest&lt;/code&gt; and &lt;code&gt;Pytest&lt;/code&gt;, and used CI/CD pipelines like &lt;code&gt;Jenkins&lt;/code&gt; and &lt;code&gt;GitHub CI/CD&lt;/code&gt;. I also regularly use &lt;code&gt;Docker&lt;/code&gt; containers on both a profesional environment and my personal servers.&lt;/p&gt; 22 - &lt;h1 id=&#34;languages&#34;&gt;Languages&lt;/h1&gt; 23 - &lt;p&gt;I speak &lt;code&gt;Spanish&lt;/code&gt; and &lt;code&gt;Catalan&lt;/code&gt; natively, and I hold and have used a professional level of &lt;code&gt;English&lt;/code&gt; on all my job positions.&lt;/p&gt; 24 - &lt;h1 id=&#34;previous-experience&#34;&gt;Previous Experience&lt;/h1&gt; 25 - &lt;h3 id=&#34;ansys-now-part-of-synopsys&#34;&gt;Ansys (now part of Synopsys)&lt;/h3&gt; 26 - &lt;ul&gt; 27 - &lt;li&gt;Location: Madrid (remote)&lt;/li&gt; 28 - &lt;li&gt;Position: R&amp;amp;D Engineer&lt;/li&gt; 29 - &lt;li&gt;Projects: 30 - &lt;ul&gt; 31 - &lt;li&gt;Developing a software tool on Python, to allow configuration of physics simuations using &lt;a href=&#34;https://www.synopsys.com/glossary/what-is-model-based-design.html&#34;&gt;model-based design&lt;/a&gt; by clients with no code knowledge required, by way of a drag-and-drop interface.&lt;/li&gt; 32 - &lt;li&gt;Refactoring a Dash Mantine wrapper library for Python, with the goal of open-sourcing said library.&lt;/li&gt; 33 - &lt;/ul&gt; 34 - &lt;/li&gt; 35 - &lt;li&gt;Tools: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows&lt;/li&gt; 36 - &lt;li&gt;Period: 2024 Aug. - 2025 Nov.&lt;/li&gt; 37 - &lt;/ul&gt; 38 - &lt;h3 id=&#34;verbio-now-verbio-by-capacity&#34;&gt;Verbio (now Verbio by Capacity)&lt;/h3&gt; 39 - &lt;ul&gt; 40 - &lt;li&gt;Location: Barcelona (hybrid)&lt;/li&gt; 41 - &lt;li&gt;Position: Backend Developer&lt;/li&gt; 42 - &lt;li&gt;Projects: 43 - &lt;ul&gt; 44 - &lt;li&gt;Developing a GRPC API gateway for a SaaS product written in Rust during the initial stages of commercialization and growth of the product.&lt;/li&gt; 45 - &lt;li&gt;Developing client tools written in Python for integrating AWS storage with the SaaS product.&lt;/li&gt; 46 - &lt;li&gt;Developing Terraform deployment scripts for hosting the different components of the SaaS product on AWS infrastructure.&lt;/li&gt; 47 - &lt;li&gt;Extension of the internal REST API and database backend for a Dashboard of product metrics.&lt;/li&gt; 48 - &lt;/ul&gt; 49 - &lt;/li&gt; 50 - &lt;li&gt;Tools: Jetbrains CLion (with Rust plugin), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux&lt;/li&gt; 51 - &lt;li&gt;Period: 2022 Jun. - 2024 Jul.&lt;/li&gt; 52 - &lt;/ul&gt; 53 - &lt;h3 id=&#34;qad-dynasys&#34;&gt;QAD DynaSys&lt;/h3&gt; 54 - &lt;ul&gt; 55 - &lt;li&gt;Location: Barcelona (remote)&lt;/li&gt; 56 - &lt;li&gt;Position: Software Developer&lt;/li&gt; 57 - &lt;li&gt;Projects: 58 - &lt;ul&gt; 59 - &lt;li&gt;Refactoring of a C++ desktop app to allow servicing the desktop app as a SaaS product.&lt;/li&gt; 60 - &lt;li&gt;Developing a C#-based frontend for interfacing with the C++ desktop app code.&lt;/li&gt; 61 - &lt;/ul&gt; 62 - &lt;/li&gt; 63 - &lt;li&gt;Tools: Visual Studio, Windows&lt;/li&gt; 64 - &lt;li&gt;Period: 2021 Jun. - 2022 Jun.&lt;/li&gt; 65 - &lt;/ul&gt; 66 - &lt;h3 id=&#34;capitole-consulting&#34;&gt;Capitole Consulting&lt;/h3&gt; 67 - &lt;ul&gt; 68 - &lt;li&gt;Location: Barcelona (remote)&lt;/li&gt; 69 - &lt;li&gt;Position: Software Developer&lt;/li&gt; 70 - &lt;li&gt;Projects: 71 - &lt;ul&gt; 72 - &lt;li&gt;Developing a Python tool for the processing of analysis results and generation of PDF reports.&lt;/li&gt; 73 - &lt;li&gt;Refactoring of the analysis results data structures for use in the previous tool, and improve maintainability.&lt;/li&gt; 74 - &lt;li&gt;Fixing bugs and performance issues in a C++ application.&lt;/li&gt; 75 - &lt;/ul&gt; 76 - &lt;/li&gt; 77 - &lt;li&gt;Period: 2021 Jan. - Jun.&lt;/li&gt; 78 - &lt;/ul&gt; 79 - &lt;h3 id=&#34;hp-inc&#34;&gt;HP Inc.&lt;/h3&gt; 80 - &lt;ul&gt; 81 - &lt;li&gt;Location: Barcelona&lt;/li&gt; 82 - &lt;li&gt;Position: Junior SDET (2018), Junior DevOps (2019, remote)&lt;/li&gt; 83 - &lt;li&gt;Projects: 84 - &lt;ul&gt; 85 - &lt;li&gt;Developing C++ unit and integration tests.&lt;/li&gt; 86 - &lt;li&gt;Maintaining several Jenkins instances as a private CI/CD pipeline solution.&lt;/li&gt; 87 - &lt;/ul&gt; 88 - &lt;/li&gt; 89 - &lt;li&gt;Tools: GoogleTest, VS Code, Jenkins, Jira, Linux&lt;/li&gt; 90 - &lt;li&gt;Period: Sep. 2018 - Sep. 2020&lt;/li&gt; 91 - &lt;/ul&gt; 92 - &lt;h1 id=&#34;miscellanea&#34;&gt;Miscellanea&lt;/h1&gt; 93 - &lt;p&gt;I host several tiny personal servers (recycled computers at home + a cloud VPS) with services for my own needs. Some of the services I host are:&lt;/p&gt; 94 - &lt;ul&gt; 95 - &lt;li&gt;An instance of &lt;a href=&#34;https://nextcloud.com/&#34;&gt;Nextcloud&lt;/a&gt; (a cloud drive solution) at &lt;a href=&#34;https://cloud.sepo.family&#34;&gt;cloud.sepo.family&lt;/a&gt;&lt;/li&gt; 96 - &lt;li&gt;An instance of &lt;a href=&#34;https://goauthentik.io/&#34;&gt;Authentik&lt;/a&gt; (an &lt;abbr title=&#34;Single Sign-On&#34;&gt;SSO&lt;/abbr&gt; solution) at &lt;a href=&#34;https://login.sepo.family&#34;&gt;login.sepo.family&lt;/a&gt;&lt;/li&gt; 97 - &lt;li&gt;An instance of &lt;a href=&#34;https://forgejo.org/&#34;&gt;Forgejo&lt;/a&gt; (a Git forge) at &lt;a href=&#34;https://git.vylion.com&#34;&gt;git.vylion.com&lt;/a&gt;&lt;/li&gt; 98 - &lt;li&gt;Several private instances of &lt;a href=&#34;https://www.portainer.io/&#34;&gt;Portainer&lt;/a&gt; &lt;abbr title=&#34;Community Edition&#34;&gt;CE&lt;/abbr&gt; (one for each of my servers)&lt;/li&gt; 99 - &lt;li&gt;A private instance of &lt;a href=&#34;https://rustdesk.com/&#34;&gt;RustDesk&lt;/a&gt;&lt;/li&gt; 100 - &lt;li&gt;A &lt;abbr title=&#34;Personal Data Server&#34;&gt;PDS&lt;/abbr&gt; &lt;abbr title=&#34;Authenticated Transfer Protocol&#34;&gt;ATProto&lt;/abbr&gt; server for hosting my own &lt;a href=&#34;https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd&#34;&gt;profile&lt;/a&gt;&lt;/li&gt; 101 - &lt;li&gt;A knot server on &lt;code&gt;knot1.tngl.vylion.com&lt;/code&gt; for &lt;a href=&#34;https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd&#34;&gt;my own&lt;/a&gt; &lt;a href=&#34;https://tangled.org/&#34;&gt;Tangled&lt;/a&gt; repos&lt;/li&gt; 102 - &lt;/ul&gt; 103 - &lt;p&gt;I currently use a custom built keyboard running my own firmware developed in C++ with &lt;a href=&#34;https://qmk.fm/&#34;&gt;QMK&lt;/a&gt;.&lt;/p&gt; 104 - &lt;p&gt;In the past I have developed &lt;a href=&#34;https://github.com/vylion/velascobot&#34;&gt;a text Markov chain bot&lt;/a&gt; for &lt;a href=&#34;https://telegram.org/&#34;&gt;Telegram&lt;/a&gt;.&lt;/p&gt; 105 - &lt;p&gt;I am also interested in learning JavaScript, TypeScript and React for fullstack development.&lt;/p&gt; 106 - &lt;h1 id=&#34;contact&#34;&gt;Contact&lt;/h1&gt; 107 - &lt;p&gt;I can be contacted by email at &lt;code&gt;gserrahima at mailbox.org&lt;/code&gt;.&lt;/p&gt; 108 - &lt;p&gt;I am currently living in &lt;code&gt;Esplugues de Llobregat&lt;/code&gt;, in Spain, Europe.&lt;/p&gt; 109 - &lt;p&gt;My phone number is &lt;code&gt;(+ ES Prefix) 637 911 884&lt;/code&gt;. I can be contacted through:&lt;/p&gt; 110 - &lt;ul&gt; 111 - &lt;li&gt;Calls&lt;/li&gt; 112 - &lt;li&gt;WhatsApp&lt;/li&gt; 113 - &lt;li&gt;Telegram&lt;/li&gt; 114 - &lt;/ul&gt; 115 - &lt;blockquote&gt; 116 - &lt;p&gt;[!NOTE] 117 - Please state your reason for contacting on your first message through WhatsApp or Telegram to avoid being filtered as spam.&lt;/p&gt; 118 - &lt;/blockquote&gt; 119 - </content> 120 - </item> 121 - 122 - </channel> 123 - </rss>
···
-9
public/en/page/1/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en-us"> 3 - <head> 4 - <title>https://vylion.com/en/</title> 5 - <link rel="canonical" href="https://vylion.com/en/"> 6 - <meta charset="utf-8"> 7 - <meta http-equiv="refresh" content="0; url=https://vylion.com/en/"> 8 - </head> 9 - </html>
···
-53
public/en/sitemap.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 3 - xmlns:xhtml="http://www.w3.org/1999/xhtml"> 4 - <url> 5 - <loc>https://vylion.com/en/categories/</loc> 6 - <xhtml:link 7 - rel="alternate" 8 - hreflang="es-es" 9 - href="https://vylion.com/es/categories/" 10 - /> 11 - <xhtml:link 12 - rel="alternate" 13 - hreflang="en-us" 14 - href="https://vylion.com/en/categories/" 15 - /> 16 - </url><url> 17 - <loc>https://vylion.com/en/</loc> 18 - <xhtml:link 19 - rel="alternate" 20 - hreflang="es-es" 21 - href="https://vylion.com/es/" 22 - /> 23 - <xhtml:link 24 - rel="alternate" 25 - hreflang="en-us" 26 - href="https://vylion.com/en/" 27 - /> 28 - </url><url> 29 - <loc>https://vylion.com/en/cv/</loc> 30 - <xhtml:link 31 - rel="alternate" 32 - hreflang="es-es" 33 - href="https://vylion.com/es/cv/" 34 - /> 35 - <xhtml:link 36 - rel="alternate" 37 - hreflang="en-us" 38 - href="https://vylion.com/en/cv/" 39 - /> 40 - </url><url> 41 - <loc>https://vylion.com/en/tags/</loc> 42 - <xhtml:link 43 - rel="alternate" 44 - hreflang="es-es" 45 - href="https://vylion.com/es/tags/" 46 - /> 47 - <xhtml:link 48 - rel="alternate" 49 - hreflang="en-us" 50 - href="https://vylion.com/en/tags/" 51 - /> 52 - </url> 53 - </urlset>
···
-204
public/en/tags/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - 5 - <title>Tags :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/en/tags/" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="en" /> 44 - <meta property="og:type" content="website" /> 45 - <meta property="og:title" content="Tags"> 46 - <meta property="og:description" content="" /> 47 - <meta property="og:url" content="https://vylion.com/en/tags/" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - <link href="/en/tags/index.xml" rel="alternate" type="application/rss+xml" title="Guillermo Serrahima" /> 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - </head> 76 - <body class="blue"> 77 - 78 - 79 - 80 - 81 - <div class="container center headings--one-size"> 82 - 83 - <header class="header"> 84 - <div class="header__inner"> 85 - <div class="header__logo"> 86 - <a href="https://vylion.com/"> 87 - <div class="logo"> 88 - guillermo serrahima 89 - </div> 90 - </a> 91 - 92 - </div> 93 - 94 - <ul class="menu menu--mobile"> 95 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 96 - <li> 97 - <ul class="menu__dropdown"> 98 - 99 - 100 - <li><a href="/en/cv">rรฉsumรฉ</a></li> 101 - 102 - 103 - 104 - <li><a href="https://git.vylion.com/vylion">projects</a></li> 105 - 106 - 107 - 108 - <hr /> 109 - 110 - <li> 111 - <a href="https://vylion.com/en/">English</a> 112 - </li> 113 - 114 - <li> 115 - <a href="https://vylion.com/es/">Espaรฑol</a> 116 - </li> 117 - 118 - 119 - </ul> 120 - </li> 121 - </ul> 122 - 123 - 124 - 125 - <ul class="menu menu--desktop menu--language-selector"> 126 - <li class="menu__trigger">English&nbsp;โ–พ</li> 127 - <li> 128 - <ul class="menu__dropdown"> 129 - 130 - <li><a href="https://vylion.com/en/">English</a></li> 131 - 132 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 133 - 134 - </ul> 135 - </li> 136 - </ul> 137 - 138 - 139 - </div> 140 - 141 - <nav class="navigation-menu"> 142 - <ul class="navigation-menu__inner menu--desktop"> 143 - 144 - 145 - 146 - <li><a href="/en/cv" >rรฉsumรฉ</a></li> 147 - 148 - 149 - 150 - <li><a href="https://git.vylion.com/vylion" >projects</a></li> 151 - 152 - 153 - 154 - </ul> 155 - </nav> 156 - 157 - 158 - </header> 159 - 160 - 161 - <div class="content"> 162 - 163 - <div class="terms"> 164 - <h1>Tags</h1> 165 - 166 - <ul> 167 - 168 - 169 - </ul> 170 - </div> 171 - 172 - </div> 173 - 174 - 175 - <footer class="footer"> 176 - <div class="footer__inner"> 177 - 178 - <div class="copyright"> 179 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 180 - 181 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 182 - </div> 183 - </div> 184 - </footer> 185 - 186 - 187 - 188 - 189 - 190 - 191 - <script type="text/javascript" src="/bundle.min.js"></script> 192 - 193 - 194 - 195 - 196 - 197 - 198 - 199 - 200 - 201 - </div> 202 - 203 - </body> 204 - </html>
···
-10
public/en/tags/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Tags on Guillermo Serrahima</title> 5 - <link>https://vylion.com/en/tags/</link> 6 - <description>Recent content in Tags on Guillermo Serrahima</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>en-us</language><atom:link href="https://vylion.com/en/tags/index.xml" rel="self" type="application/rss+xml" /> 9 - </channel> 10 - </rss>
···
-202
public/es/404.html
··· 1 - <!DOCTYPE html> 2 - <html lang="es"> 3 - <head> 4 - 5 - <title>404 Page not found :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/es/404.html" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="es" /> 44 - <meta property="og:type" content="website" /> 45 - <meta property="og:title" content="404 Page not found"> 46 - <meta property="og:description" content="" /> 47 - <meta property="og:url" content="https://vylion.com/es/404.html" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - </head> 74 - <body class="blue"> 75 - 76 - 77 - 78 - 79 - <div class="container center headings--one-size"> 80 - 81 - <header class="header"> 82 - <div class="header__inner"> 83 - <div class="header__logo"> 84 - <a href="https://vylion.com/"> 85 - <div class="logo"> 86 - guillermo serrahima 87 - </div> 88 - </a> 89 - 90 - </div> 91 - 92 - <ul class="menu menu--mobile"> 93 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 94 - <li> 95 - <ul class="menu__dropdown"> 96 - 97 - 98 - <li><a href="/es/cv">cv</a></li> 99 - 100 - 101 - 102 - <li><a href="https://git.vylion.com/vylion">proyectos</a></li> 103 - 104 - 105 - 106 - <hr /> 107 - 108 - <li> 109 - <a href="https://vylion.com/en/">English</a> 110 - </li> 111 - 112 - <li> 113 - <a href="https://vylion.com/es/">Espaรฑol</a> 114 - </li> 115 - 116 - 117 - </ul> 118 - </li> 119 - </ul> 120 - 121 - 122 - 123 - <ul class="menu menu--desktop menu--language-selector"> 124 - <li class="menu__trigger">Espaรฑol&nbsp;โ–พ</li> 125 - <li> 126 - <ul class="menu__dropdown"> 127 - 128 - <li><a href="https://vylion.com/en/">English</a></li> 129 - 130 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 131 - 132 - </ul> 133 - </li> 134 - </ul> 135 - 136 - 137 - </div> 138 - 139 - <nav class="navigation-menu"> 140 - <ul class="navigation-menu__inner menu--desktop"> 141 - 142 - 143 - 144 - <li><a href="/es/cv" >cv</a></li> 145 - 146 - 147 - 148 - <li><a href="https://git.vylion.com/vylion" >proyectos</a></li> 149 - 150 - 151 - 152 - </ul> 153 - </nav> 154 - 155 - 156 - </header> 157 - 158 - 159 - <div class="content"> 160 - 161 - <div class="post"> 162 - <h1 class="post-title">404 โ€” Page not found...</h1> 163 - 164 - <div class="post-content"> 165 - <a href="https://vylion.com/">Back to home page&nbsp;โ†’</a> 166 - </div> 167 - 168 - </div> 169 - 170 - </div> 171 - 172 - 173 - <footer class="footer"> 174 - <div class="footer__inner"> 175 - 176 - <div class="copyright"> 177 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 178 - 179 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 180 - </div> 181 - </div> 182 - </footer> 183 - 184 - 185 - 186 - 187 - 188 - 189 - <script type="text/javascript" src="/bundle.min.js"></script> 190 - 191 - 192 - 193 - 194 - 195 - 196 - 197 - 198 - 199 - </div> 200 - 201 - </body> 202 - </html>
···
-204
public/es/categories/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="es"> 3 - <head> 4 - 5 - <title>Categories :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/es/categories/" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="es" /> 44 - <meta property="og:type" content="website" /> 45 - <meta property="og:title" content="Categories"> 46 - <meta property="og:description" content="" /> 47 - <meta property="og:url" content="https://vylion.com/es/categories/" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - <link href="/es/categories/index.xml" rel="alternate" type="application/rss+xml" title="Guillermo Serrahima" /> 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - </head> 76 - <body class="blue"> 77 - 78 - 79 - 80 - 81 - <div class="container center headings--one-size"> 82 - 83 - <header class="header"> 84 - <div class="header__inner"> 85 - <div class="header__logo"> 86 - <a href="https://vylion.com/"> 87 - <div class="logo"> 88 - guillermo serrahima 89 - </div> 90 - </a> 91 - 92 - </div> 93 - 94 - <ul class="menu menu--mobile"> 95 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 96 - <li> 97 - <ul class="menu__dropdown"> 98 - 99 - 100 - <li><a href="/es/cv">cv</a></li> 101 - 102 - 103 - 104 - <li><a href="https://git.vylion.com/vylion">proyectos</a></li> 105 - 106 - 107 - 108 - <hr /> 109 - 110 - <li> 111 - <a href="https://vylion.com/en/">English</a> 112 - </li> 113 - 114 - <li> 115 - <a href="https://vylion.com/es/">Espaรฑol</a> 116 - </li> 117 - 118 - 119 - </ul> 120 - </li> 121 - </ul> 122 - 123 - 124 - 125 - <ul class="menu menu--desktop menu--language-selector"> 126 - <li class="menu__trigger">Espaรฑol&nbsp;โ–พ</li> 127 - <li> 128 - <ul class="menu__dropdown"> 129 - 130 - <li><a href="https://vylion.com/en/">English</a></li> 131 - 132 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 133 - 134 - </ul> 135 - </li> 136 - </ul> 137 - 138 - 139 - </div> 140 - 141 - <nav class="navigation-menu"> 142 - <ul class="navigation-menu__inner menu--desktop"> 143 - 144 - 145 - 146 - <li><a href="/es/cv" >cv</a></li> 147 - 148 - 149 - 150 - <li><a href="https://git.vylion.com/vylion" >proyectos</a></li> 151 - 152 - 153 - 154 - </ul> 155 - </nav> 156 - 157 - 158 - </header> 159 - 160 - 161 - <div class="content"> 162 - 163 - <div class="terms"> 164 - <h1>Categories</h1> 165 - 166 - <ul> 167 - 168 - 169 - </ul> 170 - </div> 171 - 172 - </div> 173 - 174 - 175 - <footer class="footer"> 176 - <div class="footer__inner"> 177 - 178 - <div class="copyright"> 179 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 180 - 181 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 182 - </div> 183 - </div> 184 - </footer> 185 - 186 - 187 - 188 - 189 - 190 - 191 - <script type="text/javascript" src="/bundle.min.js"></script> 192 - 193 - 194 - 195 - 196 - 197 - 198 - 199 - 200 - 201 - </div> 202 - 203 - </body> 204 - </html>
···
-10
public/es/categories/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Categories on Guillermo Serrahima</title> 5 - <link>https://vylion.com/es/categories/</link> 6 - <description>Recent content in Categories on Guillermo Serrahima</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>es-es</language><atom:link href="https://vylion.com/es/categories/index.xml" rel="self" type="application/rss+xml" /> 9 - </channel> 10 - </rss>
···
+105 -212
public/es/cv/index.html
··· 1 - <!DOCTYPE html> 2 <html lang="es"> 3 - <head> 4 - 5 - <title>Curriculum Vitae :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="Conocimientos y experiencia previa" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/es/cv/" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 42 - 43 - <meta property="og:locale" content="es" /> 44 - <meta property="og:type" content="article" /> 45 - <meta property="og:title" content="Curriculum Vitae"> 46 - <meta property="og:description" content="Conocimientos y experiencia previa" /> 47 - <meta property="og:url" content="https://vylion.com/es/cv/" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 59 60 61 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 </head> 74 - <body class="blue"> 75 76 77 78 79 - <div class="container center headings--one-size"> 80 81 - <header class="header"> 82 - <div class="header__inner"> 83 - <div class="header__logo"> 84 - <a href="https://vylion.com/"> 85 - <div class="logo"> 86 - guillermo serrahima 87 - </div> 88 - </a> 89 90 - </div> 91 - 92 - <ul class="menu menu--mobile"> 93 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 94 - <li> 95 - <ul class="menu__dropdown"> 96 - 97 - 98 - <li><a href="/es/cv">cv</a></li> 99 100 - 101 - 102 - <li><a href="https://git.vylion.com/vylion">proyectos</a></li> 103 104 - 105 - 106 - <hr /> 107 108 - <li> 109 - <a href="https://vylion.com/en/">English</a> 110 - </li> 111 - 112 - <li> 113 - <a href="https://vylion.com/es/">Espaรฑol</a> 114 - </li> 115 - 116 - 117 - </ul> 118 - </li> 119 - </ul> 120 121 - 122 - 123 - <ul class="menu menu--desktop menu--language-selector"> 124 - <li class="menu__trigger">Espaรฑol&nbsp;โ–พ</li> 125 - <li> 126 - <ul class="menu__dropdown"> 127 - 128 - <li><a href="https://vylion.com/en/">English</a></li> 129 - 130 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 131 - 132 - </ul> 133 - </li> 134 - </ul> 135 - 136 - 137 - </div> 138 - 139 - <nav class="navigation-menu"> 140 - <ul class="navigation-menu__inner menu--desktop"> 141 - 142 - 143 - 144 - <li><a href="/es/cv" >cv</a></li> 145 - 146 - 147 - 148 - <li><a href="https://git.vylion.com/vylion" >proyectos</a></li> 149 - 150 - 151 - 152 - </ul> 153 - </nav> 154 - 155 - 156 - </header> 157 158 - 159 - <div class="content"> 160 - 161 - <article class="post"> 162 - <h1 class="post-title"> 163 - <a href="https://vylion.com/es/cv/">Curriculum Vitae</a> 164 - </h1> 165 - <div class="post-meta"> 166 - 167 - </div> 168 - 169 - 170 - 171 - 172 - 173 - 174 - 175 - 176 - <div class="post-content"><div> 177 - <h1 id="quiรฉn-soy">Quiรฉn soy<a href="#quiรฉn-soy" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 178 <p>Soy Guillermo Serrahima, un ingeniero de software del รกrea de <code>Barcelona</code>, donde vivo actualmente. Me graduรฉ en la <a href="https://www.upc.edu/es">Universitat Politรจcnica de Catalunya</a> con un <code>Grado en Ingenierรญa Informรกtica</code> en 2018.</p> 179 <p>Como mรกs cรณmodo me siento es trabajando con cรณdigo en <code>C++</code>, <code>Java</code>, <code>Python</code> y <code>Rust</code>. Estoy familiarizado con <code>Git</code>, <code>Linux</code>, y la lรญnea de comandos. En mi dรญa a dรญa uso <strong>Arch Linux</strong> como mi <abbr title="Sistema Operativo">SO</abbr> habitual.</p> 180 <p>Ademรกs, he trabajado en el pasado con otros lenguajes como <code>Golang</code>, <code>C</code>, <code>C#</code>. He trabajado en proyectos que usaban <code>PostgreSQL</code>, y mantengo bases de datos de <code>SQLite</code> y <code>MySQL</code> en mis servidores personales (cada cual dependiendo de la envergadura del servicio que lo requiere.) He usado <em>frameworks</em> como <code>GoogleTest</code> y <code>Pytest</code>, y he usado sistemas de <abbr title="Continuous Integration/Continuous Development">CI/CD</abbr> como <code>Jenkins</code> y <code>GitHub CI/CD</code>. Tambiรฉn uso contenedores de <code>Docker</code> de forma regular tanto en entornos profesionales como en mis servidores personales.</p> 181 - <h1 id="idiomas">Idiomas<a href="#idiomas" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 182 <p>Hablo <code>espaรฑol</code> y <code>catalรกn</code> de forma nativa, y hablo y he usado el <code>inglรฉs</code> de forma profesional en todos mis puestos de trabajo.</p> 183 - <h1 id="experiencia-previa">Experiencia previa<a href="#experiencia-previa" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 184 - <h3 id="ansys-ahora-parte-de-synopsys">Ansys (ahora parte de Synopsys)<a href="#ansys-ahora-parte-de-synopsys" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 185 <ul> 186 <li>Localizaciรณn: Madrid (remoto)</li> 187 <li>Posiciรณn: R&amp;D Engineer</li> ··· 194 <li>Herramientas: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows</li> 195 <li>Periodo: 2024 Ago. - 2025 Nov.</li> 196 </ul> 197 - <h3 id="verbio-ahora-verbio-by-capacity">Verbio (ahora Verbio by Capacity)<a href="#verbio-ahora-verbio-by-capacity" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 198 <ul> 199 <li>Localizaciรณn: Barcelona (hรญbrido)</li> 200 <li>Posiciรณn: Backend Developer</li> ··· 209 <li>Herramientas: Jetbrains CLion (con plugin de Rust), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux</li> 210 <li>Periodo: 2022 Jun. - 2024 Jul.</li> 211 </ul> 212 - <h3 id="qad-dynasys">QAD DynaSys<a href="#qad-dynasys" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 213 <ul> 214 <li>Localizaciรณn: Barcelona (remoto)</li> 215 <li>Posiciรณn: Software Developer</li> ··· 222 <li>Herramientas: Visual Studio, Windows</li> 223 <li>Periodo: 2021 Jun. - 2022 Jun.</li> 224 </ul> 225 - <h3 id="capitole-consulting">Capitole Consulting<a href="#capitole-consulting" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 226 <ul> 227 <li>Localizaciรณn: Barcelona (remoto)</li> 228 <li>Posiciรณn: Software Developer</li> ··· 235 </li> 236 <li>Periodo: 2021 Ene. - Jun.</li> 237 </ul> 238 - <h3 id="hp-inc">HP Inc.<a href="#hp-inc" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3> 239 <ul> 240 <li>Localizaciรณn: Barcelona</li> 241 <li>Posiciรณn: Junior SDET (2018), Junior DevOps (2019, remoto)</li> ··· 248 <li>Herramientas: GoogleTest, VS Code, Jenkins, Jira, Linux</li> 249 <li>Periodo: Sep. 2018 - Sep. 2020</li> 250 </ul> 251 - <h1 id="miscellanea">Miscellanea<a href="#miscellanea" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 252 <p>Mantengo varios servidores personales pequeรฑos (ordenadores reciclados en casa + un <abbr title="Virtual Private Server">VPS</abbr> en la nube) con servicios para mis propias necesidades. Algunos de los servicios que mantengo son:</p> 253 <ul> 254 <li>Una instancia de <a href="https://nextcloud.com/">Nextcloud</a> (un <em>drive</em> en la nube) en <a href="https://cloud.sepo.family">cloud.sepo.family</a></li> ··· 257 <li>Varias instancias de <a href="https://www.portainer.io/">Portainer</a> <abbr title="Community Edition">CE</abbr> (una por cada servidor)</li> 258 <li>Una instancia privada de <a href="https://rustdesk.com/">RustDesk</a></li> 259 <li>Un servidor <abbr title="Personal Data Server">PDS</abbr> de <abbr title="Authenticated Transfer Protocol">ATProto</abbr> para hospedar mi propio <a href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">perfil</a></li> 260 - <li>Un servidor <em>knot</em> en <code>knot1.tngl.vylion.com</code> para <a href="https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">mis propios</a> repositorios de <a href="https://tangled.org/">Tangled</a></li> 261 </ul> 262 <p>Ahora mismo estoy usando un teclado mecรกnico de construcciรณn personalizada, corriendo mi propio <em>firmware</em> desarrollado con <a href="https://qmk.fm/">QMK</a> en C++.</p> 263 <p>En el pasado desarrollรฉ un <a href="https://github.com/vylion/velascobot">robot de texto de cadenas Markov</a> para <a href="https://telegram.org/">Telegram</a>.</p> 264 <p>Actualmente estoy interesado en aprender tambiรฉn JavaScript, TypeScript y React para desarrollo <em>fullstack</em>.</p> 265 - <h1 id="contacto">Contacto<a href="#contacto" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h1> 266 <p>Respondo al correo electrรณnico en <code>gserrahima [arroba] mailbox.org</code>.</p> 267 <p>Actualmente vivo en <code>Esplugues de Llobregat</code>, en Espaรฑa, Europa.</p> 268 <p>Mi nรบmero de telรฉfono es <code>(+ ES Prefix) 637 911 884</code>. Puedo ser contactado a travรฉs de:</p> ··· 271 <li>WhatsApp</li> 272 <li>Telegram</li> 273 </ul> 274 - <blockquote> 275 - <p>[!NOTE] 276 - Por favor incluid el motivo de contacto en el primer mensaje de WhatsApp o Telegram para evitar el filtrado como spam.</p> 277 </blockquote> 278 279 - </div></div> 280 - 281 - 282 - 283 - 284 - 285 - 286 - 287 - </article> 288 - 289 - </div> 290 - 291 - 292 <footer class="footer"> 293 - <div class="footer__inner"> 294 - 295 - <div class="copyright"> 296 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 297 - 298 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 299 - </div> 300 - </div> 301 - </footer> 302 303 - 304 - 305 - 306 - 307 - 308 - <script type="text/javascript" src="/bundle.min.js"></script> 309 - 310 - 311 - 312 - 313 - 314 - 315 - 316 - 317 - 318 - </div> 319 - 320 - </body> 321 </html>
··· 1 + <!doctype html> 2 <html lang="es"> 3 4 + <head> 5 + <meta charset="utf-8"> 6 + <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src-attr 'unsafe-inline'; img-src 'self' data: www.w3.org"> 8 9 + <title>Mi CV | Guillermo Serrahima</title> 10 11 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 12 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 13 + <link rel="stylesheet" href="https://vylion.com/css/style.css?h=22b8cbf1b9d367db5ee6"> 14 + <script src="https://vylion.com/js/auto-close-popover-on-resize.js?h=4ef87d6fc7b98b22e044" defer></script> 15 + <script src="https://vylion.com/js/copy-code-to-clipboard.js?h=6aac77c47d552a0ac847" defer></script> 16 17 + <link rel="canonical" href="https://vylion.com/es/cv/"> 18 + 19 + <meta name="author" content="Guillermo Serrahima"> 20 + <meta name="description" content="Conocimientos y experiencia previa"> 21 + <meta name="robots" content="index, follow"> 22 + <meta name="theme-color" content="#211f1a"> 23 + <meta name="color-scheme" content="dark"> 24 25 + <meta property="og:title" content="Mi CV"> 26 + <meta property="og:type" content="article"> 27 + <meta property="og:url" content="https://vylion.com/es/cv/"> 28 + <meta property="og:description" content="Conocimientos y experiencia previa"> 29 + <meta property="og:site_name" content="Guillermo Serrahima"> 30 + <meta property="og:updated_time" content="2025-12-30T22:59:21.686383446+01:00"> 31 + <meta name="fediverse:creator" content="@me.vylion.com@bsky.brid.gy"> 32 </head> 33 34 + <body class="layout-center"> 35 + <header class="header"> 36 + <div class="header-container"> 37 + <span class="header-logo-container"> 38 + <a href="https://vylion.com/es/"> 39 + <span class="logo">Guillermo Serrahima</span> 40 + </a> 41 + </span> 42 + </div> 43 44 + <!-- translations_list.html --> 45 46 + 47 48 49 50 + <nav class="main-menu" aria-label="Translations"> 51 + <a class="skip-to-content" href="#main">Skip to main content</a> 52 + <button class="main-menu-dropdown-button" popovertarget="nav-menu">Menu</button> 53 + <ul id="nav-menu" class="main-menu-items" aria-label="Site Navigation" popover> 54 55 + 56 + 57 + <li><a href="https:&#x2F;&#x2F;vylion.com&#x2F;cv&#x2F;">EN</a></li> 58 + 59 + 60 61 + 62 63 + </ul> 64 + </nav> 65 66 + </header> 67 + <main id="main"> 68 + <article class="post content"> 69 + <header> 70 + <h1 class="post-title"> 71 + <a href="https://vylion.com/es/cv/">Mi CV</a> 72 + </h1> 73 + <ul class="post-meta hidden"> 74 + </ul> 75 + </header> 76 77 + <h1 id="quien-soy">Quiรฉn soy</h1> 78 <p>Soy Guillermo Serrahima, un ingeniero de software del รกrea de <code>Barcelona</code>, donde vivo actualmente. Me graduรฉ en la <a href="https://www.upc.edu/es">Universitat Politรจcnica de Catalunya</a> con un <code>Grado en Ingenierรญa Informรกtica</code> en 2018.</p> 79 <p>Como mรกs cรณmodo me siento es trabajando con cรณdigo en <code>C++</code>, <code>Java</code>, <code>Python</code> y <code>Rust</code>. Estoy familiarizado con <code>Git</code>, <code>Linux</code>, y la lรญnea de comandos. En mi dรญa a dรญa uso <strong>Arch Linux</strong> como mi <abbr title="Sistema Operativo">SO</abbr> habitual.</p> 80 <p>Ademรกs, he trabajado en el pasado con otros lenguajes como <code>Golang</code>, <code>C</code>, <code>C#</code>. He trabajado en proyectos que usaban <code>PostgreSQL</code>, y mantengo bases de datos de <code>SQLite</code> y <code>MySQL</code> en mis servidores personales (cada cual dependiendo de la envergadura del servicio que lo requiere.) He usado <em>frameworks</em> como <code>GoogleTest</code> y <code>Pytest</code>, y he usado sistemas de <abbr title="Continuous Integration/Continuous Development">CI/CD</abbr> como <code>Jenkins</code> y <code>GitHub CI/CD</code>. Tambiรฉn uso contenedores de <code>Docker</code> de forma regular tanto en entornos profesionales como en mis servidores personales.</p> 81 + <h1 id="idiomas">Idiomas</h1> 82 <p>Hablo <code>espaรฑol</code> y <code>catalรกn</code> de forma nativa, y hablo y he usado el <code>inglรฉs</code> de forma profesional en todos mis puestos de trabajo.</p> 83 + <h1 id="experiencia-previa">Experiencia previa</h1> 84 + <h3 id="ansys-ahora-parte-de-synopsys">Ansys (ahora parte de Synopsys)</h3> 85 <ul> 86 <li>Localizaciรณn: Madrid (remoto)</li> 87 <li>Posiciรณn: R&amp;D Engineer</li> ··· 94 <li>Herramientas: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows</li> 95 <li>Periodo: 2024 Ago. - 2025 Nov.</li> 96 </ul> 97 + <h3 id="verbio-ahora-verbio-by-capacity">Verbio (ahora Verbio by Capacity)</h3> 98 <ul> 99 <li>Localizaciรณn: Barcelona (hรญbrido)</li> 100 <li>Posiciรณn: Backend Developer</li> ··· 109 <li>Herramientas: Jetbrains CLion (con plugin de Rust), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux</li> 110 <li>Periodo: 2022 Jun. - 2024 Jul.</li> 111 </ul> 112 + <h3 id="qad-dynasys">QAD DynaSys</h3> 113 <ul> 114 <li>Localizaciรณn: Barcelona (remoto)</li> 115 <li>Posiciรณn: Software Developer</li> ··· 122 <li>Herramientas: Visual Studio, Windows</li> 123 <li>Periodo: 2021 Jun. - 2022 Jun.</li> 124 </ul> 125 + <h3 id="capitole-consulting">Capitole Consulting</h3> 126 <ul> 127 <li>Localizaciรณn: Barcelona (remoto)</li> 128 <li>Posiciรณn: Software Developer</li> ··· 135 </li> 136 <li>Periodo: 2021 Ene. - Jun.</li> 137 </ul> 138 + <h3 id="hp-inc">HP Inc.</h3> 139 <ul> 140 <li>Localizaciรณn: Barcelona</li> 141 <li>Posiciรณn: Junior SDET (2018), Junior DevOps (2019, remoto)</li> ··· 148 <li>Herramientas: GoogleTest, VS Code, Jenkins, Jira, Linux</li> 149 <li>Periodo: Sep. 2018 - Sep. 2020</li> 150 </ul> 151 + <h1 id="miscellanea">Miscellanea</h1> 152 <p>Mantengo varios servidores personales pequeรฑos (ordenadores reciclados en casa + un <abbr title="Virtual Private Server">VPS</abbr> en la nube) con servicios para mis propias necesidades. Algunos de los servicios que mantengo son:</p> 153 <ul> 154 <li>Una instancia de <a href="https://nextcloud.com/">Nextcloud</a> (un <em>drive</em> en la nube) en <a href="https://cloud.sepo.family">cloud.sepo.family</a></li> ··· 157 <li>Varias instancias de <a href="https://www.portainer.io/">Portainer</a> <abbr title="Community Edition">CE</abbr> (una por cada servidor)</li> 158 <li>Una instancia privada de <a href="https://rustdesk.com/">RustDesk</a></li> 159 <li>Un servidor <abbr title="Personal Data Server">PDS</abbr> de <abbr title="Authenticated Transfer Protocol">ATProto</abbr> para hospedar mi propio <a href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">perfil</a></li> 160 + <li>A servidor <em>knot</em> en <code>knot1.tngl.vylion.com</code> para <a href="https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd">mis propios</a> repositorios de <a href="https://tangled.org/">Tangled</a></li> 161 </ul> 162 <p>Ahora mismo estoy usando un teclado mecรกnico de construcciรณn personalizada, corriendo mi propio <em>firmware</em> desarrollado con <a href="https://qmk.fm/">QMK</a> en C++.</p> 163 <p>En el pasado desarrollรฉ un <a href="https://github.com/vylion/velascobot">robot de texto de cadenas Markov</a> para <a href="https://telegram.org/">Telegram</a>.</p> 164 <p>Actualmente estoy interesado en aprender tambiรฉn JavaScript, TypeScript y React para desarrollo <em>fullstack</em>.</p> 165 + <h1 id="contacto">Contacto</h1> 166 <p>Respondo al correo electrรณnico en <code>gserrahima [arroba] mailbox.org</code>.</p> 167 <p>Actualmente vivo en <code>Esplugues de Llobregat</code>, en Espaรฑa, Europa.</p> 168 <p>Mi nรบmero de telรฉfono es <code>(+ ES Prefix) 637 911 884</code>. Puedo ser contactado a travรฉs de:</p> ··· 171 <li>WhatsApp</li> 172 <li>Telegram</li> 173 </ul> 174 + <blockquote class="markdown-alert-note"> 175 + <p>Por favor incluid el motivo de contacto en el primer mensaje de WhatsApp o Telegram para evitar el filtrado como spam.</p> 176 </blockquote> 177 178 + </article> 179 + </main> 180 <footer class="footer"> 181 + <address class="socials"> 182 + <ul> 183 + <li> 184 + <a class="social-link" rel="me" href="https://www.linkedin.com/in/ebkalderon" title="linkedin" aria-label="linkedin"> 185 + <svg role="img" aria-label="linkedin icon"> 186 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/linkedin.svg#icon" /> 187 + </svg> 188 + </a> 189 + </li> 190 + <li> 191 + <a class="social-link" rel="me" href="https://sk.vylion.com/@coldrange" title="mastodon" aria-label="mastodon"> 192 + <svg role="img" aria-label="mastodon icon"> 193 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/mastodon.svg#icon" /> 194 + </svg> 195 + </a> 196 + </li> 197 + <li> 198 + <a class="social-link" rel="me" href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd" title="bluesky" aria-label="bluesky"> 199 + <svg role="img" aria-label="bluesky icon"> 200 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/bluesky.svg#icon" /> 201 + </svg> 202 + </a> 203 + </li> 204 + </ul> 205 + </address> 206 + <p class="copyright"> 207 + <span>ยฉ <time>2025</time> Guillermo Serrahima</span> 208 + <span>Powered by <a href="https://www.getzola.org">Zola</a></span> 209 + <span>Theme by <a href="https://eyalkalderon.com">ebkalderon</a></span> 210 + </p> 211 + </footer> 212 + </body> 213 214 </html>
+95 -204
public/es/index.html
··· 1 - <!DOCTYPE html> 2 <html lang="es"> 3 - <head> 4 - <meta name="generator" content="Hugo 0.154.3"> 5 - 6 - <title>Guillermo Serrahima</title> 7 - 8 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 9 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 10 - <meta name="description" content="" /> 11 - <meta name="keywords" content="" /> 12 - 13 - <meta name="robots" content="noodp" /> 14 - 15 - <link rel="canonical" href="https://vylion.com/es/" /> 16 - 17 - 18 - 19 - 20 21 22 23 - 24 - 25 - 26 - 27 - 28 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 37 - 38 - 39 - 40 - <meta name="twitter:card" content="summary" /> 41 - 42 - 43 - 44 - <meta property="og:locale" content="es" /> 45 - <meta property="og:type" content="website" /> 46 - <meta property="og:title" content="Guillermo Serrahima"> 47 - <meta property="og:description" content="" /> 48 - <meta property="og:url" content="https://vylion.com/es/" /> 49 - <meta property="og:site_name" content="Guillermo Serrahima" /> 50 - 51 - 52 - <meta property="og:image" content="https://vylion.com/favicon.png"> 53 - 54 - 55 - <meta property="og:image:width" content="1200"> 56 - <meta property="og:image:height" content="627"> 57 - 58 - 59 - 60 - 61 - 62 - <link href="/es/index.xml" rel="alternate" type="application/rss+xml" title="Guillermo Serrahima" /> 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 75 76 </head> 77 - <body class="blue"> 78 79 80 81 82 - <div class="container center headings--one-size"> 83 84 - <header class="header"> 85 - <div class="header__inner"> 86 - <div class="header__logo"> 87 - <a href="https://vylion.com/"> 88 - <div class="logo"> 89 - guillermo serrahima 90 - </div> 91 - </a> 92 93 - </div> 94 - 95 - <ul class="menu menu--mobile"> 96 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 97 - <li> 98 - <ul class="menu__dropdown"> 99 - 100 101 - <li><a href="/es/cv">cv</a></li> 102 103 - 104 105 - <li><a href="https://git.vylion.com/vylion">proyectos</a></li> 106 - 107 - 108 - 109 - <hr /> 110 - 111 - <li> 112 - <a href="https://vylion.com/en/">English</a> 113 - </li> 114 - 115 - <li> 116 - <a href="https://vylion.com/es/">Espaรฑol</a> 117 - </li> 118 - 119 - 120 - </ul> 121 - </li> 122 - </ul> 123 124 - 125 - 126 - <ul class="menu menu--desktop menu--language-selector"> 127 - <li class="menu__trigger">Espaรฑol&nbsp;โ–พ</li> 128 - <li> 129 - <ul class="menu__dropdown"> 130 - 131 - <li><a href="https://vylion.com/en/">English</a></li> 132 - 133 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 134 - 135 - </ul> 136 - </li> 137 - </ul> 138 - 139 - 140 - </div> 141 - 142 - <nav class="navigation-menu"> 143 - <ul class="navigation-menu__inner menu--desktop"> 144 - 145 - 146 - 147 - <li><a href="/es/cv" >cv</a></li> 148 - 149 - 150 - 151 - <li><a href="https://git.vylion.com/vylion" >proyectos</a></li> 152 - 153 - 154 - 155 - </ul> 156 - </nav> 157 - 158 - 159 - </header> 160 - 161 - 162 - <div class="content"> 163 - 164 - 165 - <div class="index-content "> 166 - <p>ยกHola! Soy Guillermo Serrahima, un ingeniero de <em>software</em> del รกrea de Barcelona, Espaรฑa. Este es mi sitio web personal.</p> 167 - <p>Puedes consultar mi <a href="https://vylion.com/es/cv/">currรญculum</a>, o echar un vistazo a mis <a href="https://git.vylion.com/vylion">proyectos</a>.</p> 168 - 169 - </div> 170 - 171 - <div class="posts"> 172 - 173 - 174 - 175 - 176 - 177 - 178 - 179 - 180 - 181 - 182 - 183 - <div class="pagination"> 184 - <div class="pagination__buttons"> 185 - 186 - 187 - </div> 188 - </div> 189 - 190 - </div> 191 - 192 - </div> 193 - 194 - 195 <footer class="footer"> 196 - <div class="footer__inner"> 197 - 198 - <div class="copyright"> 199 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 200 - 201 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 202 - </div> 203 - </div> 204 - </footer> 205 - 206 - 207 - 208 - 209 - 210 - 211 - <script type="text/javascript" src="/bundle.min.js"></script> 212 - 213 - 214 - 215 - 216 - 217 - 218 - 219 - 220 - 221 - </div> 222 - 223 </body> 224 </html>
··· 1 + <!doctype html> 2 <html lang="es"> 3 4 + <head> 5 + <meta charset="utf-8"> 6 + <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src-attr 'unsafe-inline'; img-src 'self' data: www.w3.org"> 8 9 + <title>Guillermo Serrahima</title> 10 11 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 12 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 13 + <link rel="stylesheet" href="https://vylion.com/css/style.css?h=22b8cbf1b9d367db5ee6"> 14 + <script src="https://vylion.com/js/auto-close-popover-on-resize.js?h=4ef87d6fc7b98b22e044" defer></script> 15 + <script src="https://vylion.com/js/copy-code-to-clipboard.js?h=6aac77c47d552a0ac847" defer></script> 16 17 + <link rel="canonical" href="https://vylion.com/es/"> 18 + 19 + <meta name="robots" content="index, follow"> 20 + <meta name="theme-color" content="#211f1a"> 21 + <meta name="color-scheme" content="dark"> 22 23 + <meta property="og:title" content="Pรกgina principal"> 24 + <meta property="og:type" content="website"> 25 + <meta property="og:url" content="https://vylion.com/es/"> 26 + <meta property="og:site_name" content="Guillermo Serrahima"> 27 + <meta property="og:updated_time" content="2025-12-30T22:59:21.687931882+01:00"> 28 + <meta name="fediverse:creator" content="@me.vylion.com@bsky.brid.gy"> 29 </head> 30 31 + <body class="layout-center"> 32 + <header class="header"> 33 + <div class="header-container"> 34 + <span class="header-logo-container"> 35 + <a href="https://vylion.com/es/"> 36 + <span class="logo">Guillermo Serrahima</span> 37 + </a> 38 + </span> 39 + </div> 40 41 + <!-- translations_list.html --> 42 43 + 44 45 46 47 + <nav class="main-menu" aria-label="Translations"> 48 + <a class="skip-to-content" href="#main">Skip to main content</a> 49 + <button class="main-menu-dropdown-button" popovertarget="nav-menu">Menu</button> 50 + <ul id="nav-menu" class="main-menu-items" aria-label="Site Navigation" popover> 51 52 + 53 54 + 55 + 56 + <li><a href="https:&#x2F;&#x2F;vylion.com&#x2F;">EN</a></li> 57 + 58 + 59 60 + </ul> 61 + </nav> 62 63 + </header> 64 + <main id="main"> 65 + <header class="content"> 66 + <p>ยกHola! Soy Guillermo Serrahima, un ingeniero de <em>software</em> del รกrea de Barcelona, Espaรฑa. Este es mi sitio web personal.</p> 67 + <p>A lo mejor te gustarรญa ojear las diferentes secciones:</p> 68 + </header> 69 + <article class="post"> 70 + <header> 71 + <h2 class="post-title"> 72 + <a href="https://vylion.com/es/cv/">Mi CV</a> 73 + </h2> 74 + <ul class="post-meta hidden"> 75 + </ul> 76 + </header> 77 + <p>Conocimientos y experiencia previa</p> 78 + <a class="read-more" href="https://vylion.com/es/cv/" aria-label="Read more about Mi CV">read more โ†’</a> 79 + </article> 80 + </main> 81 <footer class="footer"> 82 + <address class="socials"> 83 + <ul> 84 + <li> 85 + <a class="social-link" rel="me" href="https://www.linkedin.com/in/ebkalderon" title="linkedin" aria-label="linkedin"> 86 + <svg role="img" aria-label="linkedin icon"> 87 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/linkedin.svg#icon" /> 88 + </svg> 89 + </a> 90 + </li> 91 + <li> 92 + <a class="social-link" rel="me" href="https://sk.vylion.com/@coldrange" title="mastodon" aria-label="mastodon"> 93 + <svg role="img" aria-label="mastodon icon"> 94 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/mastodon.svg#icon" /> 95 + </svg> 96 + </a> 97 + </li> 98 + <li> 99 + <a class="social-link" rel="me" href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd" title="bluesky" aria-label="bluesky"> 100 + <svg role="img" aria-label="bluesky icon"> 101 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/bluesky.svg#icon" /> 102 + </svg> 103 + </a> 104 + </li> 105 + </ul> 106 + </address> 107 + <p class="copyright"> 108 + <span>ยฉ <time>2025</time> Guillermo Serrahima</span> 109 + <span>Powered by <a href="https://www.getzola.org">Zola</a></span> 110 + <span>Theme by <a href="https://eyalkalderon.com">ebkalderon</a></span> 111 + </p> 112 + </footer> 113 </body> 114 + 115 </html>
-124
public/es/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Inicio on Guillermo Serrahima</title> 5 - <link>https://vylion.com/es/</link> 6 - <description>Recent content in Inicio on Guillermo Serrahima</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>es-es</language><atom:link href="https://vylion.com/es/index.xml" rel="self" type="application/rss+xml" /> 9 - <item> 10 - <title>Curriculum Vitae</title> 11 - <link>https://vylion.com/es/cv/</link> 12 - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> 13 - 14 - <guid>https://vylion.com/es/cv/</guid> 15 - <description>&lt;h1 id=&#34;quiรฉn-soy&#34;&gt;Quiรฉn soy&lt;/h1&gt; 16 - &lt;p&gt;Soy Guillermo Serrahima, un ingeniero de software del รกrea de &lt;code&gt;Barcelona&lt;/code&gt;, donde vivo actualmente. Me graduรฉ en la &lt;a href=&#34;https://www.upc.edu/es&#34;&gt;Universitat Politรจcnica de Catalunya&lt;/a&gt; con un &lt;code&gt;Grado en Ingenierรญa Informรกtica&lt;/code&gt; en 2018.&lt;/p&gt; 17 - &lt;p&gt;Como mรกs cรณmodo me siento es trabajando con cรณdigo en &lt;code&gt;C++&lt;/code&gt;, &lt;code&gt;Java&lt;/code&gt;, &lt;code&gt;Python&lt;/code&gt; y &lt;code&gt;Rust&lt;/code&gt;. Estoy familiarizado con &lt;code&gt;Git&lt;/code&gt;, &lt;code&gt;Linux&lt;/code&gt;, y la lรญnea de comandos. En mi dรญa a dรญa uso &lt;strong&gt;Arch Linux&lt;/strong&gt; como mi &lt;abbr title=&#34;Sistema Operativo&#34;&gt;SO&lt;/abbr&gt; habitual.&lt;/p&gt; 18 - &lt;p&gt;Ademรกs, he trabajado en el pasado con otros lenguajes como &lt;code&gt;Golang&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;C#&lt;/code&gt;. He trabajado en proyectos que usaban &lt;code&gt;PostgreSQL&lt;/code&gt;, y mantengo bases de datos de &lt;code&gt;SQLite&lt;/code&gt; y &lt;code&gt;MySQL&lt;/code&gt; en mis servidores personales (cada cual dependiendo de la envergadura del servicio que lo requiere.) He usado &lt;em&gt;frameworks&lt;/em&gt; como &lt;code&gt;GoogleTest&lt;/code&gt; y &lt;code&gt;Pytest&lt;/code&gt;, y he usado sistemas de &lt;abbr title=&#34;Continuous Integration/Continuous Development&#34;&gt;CI/CD&lt;/abbr&gt; como &lt;code&gt;Jenkins&lt;/code&gt; y &lt;code&gt;GitHub CI/CD&lt;/code&gt;. Tambiรฉn uso contenedores de &lt;code&gt;Docker&lt;/code&gt; de forma regular tanto en entornos profesionales como en mis servidores personales.&lt;/p&gt;</description> 19 - <content>&lt;h1 id=&#34;quiรฉn-soy&#34;&gt;Quiรฉn soy&lt;/h1&gt; 20 - &lt;p&gt;Soy Guillermo Serrahima, un ingeniero de software del รกrea de &lt;code&gt;Barcelona&lt;/code&gt;, donde vivo actualmente. Me graduรฉ en la &lt;a href=&#34;https://www.upc.edu/es&#34;&gt;Universitat Politรจcnica de Catalunya&lt;/a&gt; con un &lt;code&gt;Grado en Ingenierรญa Informรกtica&lt;/code&gt; en 2018.&lt;/p&gt; 21 - &lt;p&gt;Como mรกs cรณmodo me siento es trabajando con cรณdigo en &lt;code&gt;C++&lt;/code&gt;, &lt;code&gt;Java&lt;/code&gt;, &lt;code&gt;Python&lt;/code&gt; y &lt;code&gt;Rust&lt;/code&gt;. Estoy familiarizado con &lt;code&gt;Git&lt;/code&gt;, &lt;code&gt;Linux&lt;/code&gt;, y la lรญnea de comandos. En mi dรญa a dรญa uso &lt;strong&gt;Arch Linux&lt;/strong&gt; como mi &lt;abbr title=&#34;Sistema Operativo&#34;&gt;SO&lt;/abbr&gt; habitual.&lt;/p&gt; 22 - &lt;p&gt;Ademรกs, he trabajado en el pasado con otros lenguajes como &lt;code&gt;Golang&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;C#&lt;/code&gt;. He trabajado en proyectos que usaban &lt;code&gt;PostgreSQL&lt;/code&gt;, y mantengo bases de datos de &lt;code&gt;SQLite&lt;/code&gt; y &lt;code&gt;MySQL&lt;/code&gt; en mis servidores personales (cada cual dependiendo de la envergadura del servicio que lo requiere.) He usado &lt;em&gt;frameworks&lt;/em&gt; como &lt;code&gt;GoogleTest&lt;/code&gt; y &lt;code&gt;Pytest&lt;/code&gt;, y he usado sistemas de &lt;abbr title=&#34;Continuous Integration/Continuous Development&#34;&gt;CI/CD&lt;/abbr&gt; como &lt;code&gt;Jenkins&lt;/code&gt; y &lt;code&gt;GitHub CI/CD&lt;/code&gt;. Tambiรฉn uso contenedores de &lt;code&gt;Docker&lt;/code&gt; de forma regular tanto en entornos profesionales como en mis servidores personales.&lt;/p&gt; 23 - &lt;h1 id=&#34;idiomas&#34;&gt;Idiomas&lt;/h1&gt; 24 - &lt;p&gt;Hablo &lt;code&gt;espaรฑol&lt;/code&gt; y &lt;code&gt;catalรกn&lt;/code&gt; de forma nativa, y hablo y he usado el &lt;code&gt;inglรฉs&lt;/code&gt; de forma profesional en todos mis puestos de trabajo.&lt;/p&gt; 25 - &lt;h1 id=&#34;experiencia-previa&#34;&gt;Experiencia previa&lt;/h1&gt; 26 - &lt;h3 id=&#34;ansys-ahora-parte-de-synopsys&#34;&gt;Ansys (ahora parte de Synopsys)&lt;/h3&gt; 27 - &lt;ul&gt; 28 - &lt;li&gt;Localizaciรณn: Madrid (remoto)&lt;/li&gt; 29 - &lt;li&gt;Posiciรณn: R&amp;amp;D Engineer&lt;/li&gt; 30 - &lt;li&gt;Proyectos: 31 - &lt;ul&gt; 32 - &lt;li&gt;Desarrollo de una herramienta en Python para la configuraciรณn de simulaciones de fรญsicas mediante &lt;a href=&#34;https://www.synopsys.com/glossary/what-is-model-based-design.html&#34;&gt;diseรฑo basado en modelos&lt;/a&gt; para clientes sin conocimiento de programaciรณn necesario, con una interfaz de arrastrar-y-soltar.&lt;/li&gt; 33 - &lt;li&gt;Refactorizaciรณn de una librerรญa &lt;em&gt;wrapper&lt;/em&gt; de Dash Mantine para Python, con el objetivo de liberar el cรณdigo de forma pรบblica.&lt;/li&gt; 34 - &lt;/ul&gt; 35 - &lt;/li&gt; 36 - &lt;li&gt;Herramientas: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows&lt;/li&gt; 37 - &lt;li&gt;Periodo: 2024 Ago. - 2025 Nov.&lt;/li&gt; 38 - &lt;/ul&gt; 39 - &lt;h3 id=&#34;verbio-ahora-verbio-by-capacity&#34;&gt;Verbio (ahora Verbio by Capacity)&lt;/h3&gt; 40 - &lt;ul&gt; 41 - &lt;li&gt;Localizaciรณn: Barcelona (hรญbrido)&lt;/li&gt; 42 - &lt;li&gt;Posiciรณn: Backend Developer&lt;/li&gt; 43 - &lt;li&gt;Proyectos: 44 - &lt;ul&gt; 45 - &lt;li&gt;Desarrollo de una API de GRPC para un producto &lt;abbr title=&#34;Software-as-a-Service&#34;&gt;SaaS&lt;/abbr&gt; escrito en Rust durante la fase inicial de comercializaciรณn y crecimiento del producto.&lt;/li&gt; 46 - &lt;li&gt;Desarrollo de herramientas cliente en Pytohn para la integraciรณn del uso de almacenamiento en &lt;abbr title=&#34;Amazon Web Service&#34;&gt;AWS&lt;/abbr&gt; en el producto SaaS mencionado.&lt;/li&gt; 47 - &lt;li&gt;Desarrollo de &lt;em&gt;scripts&lt;/em&gt; de despliegue en Terraform para hospedar los diferentes componentes del producto SaaS en infraestructura AWS.&lt;/li&gt; 48 - &lt;li&gt;Extensiรณn del backend de una API REST y una base de datos internas para un panel de mรฉtricas de uso del producto.&lt;/li&gt; 49 - &lt;/ul&gt; 50 - &lt;/li&gt; 51 - &lt;li&gt;Herramientas: Jetbrains CLion (con plugin de Rust), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux&lt;/li&gt; 52 - &lt;li&gt;Periodo: 2022 Jun. - 2024 Jul.&lt;/li&gt; 53 - &lt;/ul&gt; 54 - &lt;h3 id=&#34;qad-dynasys&#34;&gt;QAD DynaSys&lt;/h3&gt; 55 - &lt;ul&gt; 56 - &lt;li&gt;Localizaciรณn: Barcelona (remoto)&lt;/li&gt; 57 - &lt;li&gt;Posiciรณn: Software Developer&lt;/li&gt; 58 - &lt;li&gt;Proyectos: 59 - &lt;ul&gt; 60 - &lt;li&gt;Refactorizaciรณn de una aplicaciรณn de escritorio escrita en C++ para permiting servir dicha aplicaciรณn como producto SaaS.&lt;/li&gt; 61 - &lt;li&gt;Desarrollo de un &lt;em&gt;frontend&lt;/em&gt; basado en C# para interactuar con el cรณdigo de la aplicaciรณn de escritorio.&lt;/li&gt; 62 - &lt;/ul&gt; 63 - &lt;/li&gt; 64 - &lt;li&gt;Herramientas: Visual Studio, Windows&lt;/li&gt; 65 - &lt;li&gt;Periodo: 2021 Jun. - 2022 Jun.&lt;/li&gt; 66 - &lt;/ul&gt; 67 - &lt;h3 id=&#34;capitole-consulting&#34;&gt;Capitole Consulting&lt;/h3&gt; 68 - &lt;ul&gt; 69 - &lt;li&gt;Localizaciรณn: Barcelona (remoto)&lt;/li&gt; 70 - &lt;li&gt;Posiciรณn: Software Developer&lt;/li&gt; 71 - &lt;li&gt;Proyectos: 72 - &lt;ul&gt; 73 - &lt;li&gt;Desarrollo de una herramienta en Python para el procesado de resultados de anรกlisis y generaciรณn de informes en PDF.&lt;/li&gt; 74 - &lt;li&gt;Refactorizaciรณn de las estructuras de datos de los resultados de anรกlisis para el uso en la herramienta mencionada, y para mejorar mantenimiento futuro.&lt;/li&gt; 75 - &lt;li&gt;Arreglo de errores y problemas de rendimiento en una aplicaciรณn C++.&lt;/li&gt; 76 - &lt;/ul&gt; 77 - &lt;/li&gt; 78 - &lt;li&gt;Periodo: 2021 Ene. - Jun.&lt;/li&gt; 79 - &lt;/ul&gt; 80 - &lt;h3 id=&#34;hp-inc&#34;&gt;HP Inc.&lt;/h3&gt; 81 - &lt;ul&gt; 82 - &lt;li&gt;Localizaciรณn: Barcelona&lt;/li&gt; 83 - &lt;li&gt;Posiciรณn: Junior SDET (2018), Junior DevOps (2019, remoto)&lt;/li&gt; 84 - &lt;li&gt;Proyectos: 85 - &lt;ul&gt; 86 - &lt;li&gt;Desarrollo de tests de unidad y de integraciรณn en C++.&lt;/li&gt; 87 - &lt;li&gt;Mantenimiento de varias instancias de Jenkins como soluciรณn de sistema CI/CD privado.&lt;/li&gt; 88 - &lt;/ul&gt; 89 - &lt;/li&gt; 90 - &lt;li&gt;Herramientas: GoogleTest, VS Code, Jenkins, Jira, Linux&lt;/li&gt; 91 - &lt;li&gt;Periodo: Sep. 2018 - Sep. 2020&lt;/li&gt; 92 - &lt;/ul&gt; 93 - &lt;h1 id=&#34;miscellanea&#34;&gt;Miscellanea&lt;/h1&gt; 94 - &lt;p&gt;Mantengo varios servidores personales pequeรฑos (ordenadores reciclados en casa + un &lt;abbr title=&#34;Virtual Private Server&#34;&gt;VPS&lt;/abbr&gt; en la nube) con servicios para mis propias necesidades. Algunos de los servicios que mantengo son:&lt;/p&gt; 95 - &lt;ul&gt; 96 - &lt;li&gt;Una instancia de &lt;a href=&#34;https://nextcloud.com/&#34;&gt;Nextcloud&lt;/a&gt; (un &lt;em&gt;drive&lt;/em&gt; en la nube) en &lt;a href=&#34;https://cloud.sepo.family&#34;&gt;cloud.sepo.family&lt;/a&gt;&lt;/li&gt; 97 - &lt;li&gt;Una instancia de &lt;a href=&#34;https://goauthentik.io/&#34;&gt;Authentik&lt;/a&gt; (una soluciรณn de &lt;abbr title=&#34;Single Sign-On&#34;&gt;SSO&lt;/abbr&gt;) en &lt;a href=&#34;https://login.sepo.family&#34;&gt;login.sepo.family&lt;/a&gt;&lt;/li&gt; 98 - &lt;li&gt;Una instancia de &lt;a href=&#34;https://forgejo.org/&#34;&gt;Forgejo&lt;/a&gt; (una forja Git) en &lt;a href=&#34;https://git.vylion.com&#34;&gt;git.vylion.com&lt;/a&gt;&lt;/li&gt; 99 - &lt;li&gt;Varias instancias de &lt;a href=&#34;https://www.portainer.io/&#34;&gt;Portainer&lt;/a&gt; &lt;abbr title=&#34;Community Edition&#34;&gt;CE&lt;/abbr&gt; (una por cada servidor)&lt;/li&gt; 100 - &lt;li&gt;Una instancia privada de &lt;a href=&#34;https://rustdesk.com/&#34;&gt;RustDesk&lt;/a&gt;&lt;/li&gt; 101 - &lt;li&gt;Un servidor &lt;abbr title=&#34;Personal Data Server&#34;&gt;PDS&lt;/abbr&gt; de &lt;abbr title=&#34;Authenticated Transfer Protocol&#34;&gt;ATProto&lt;/abbr&gt; para hospedar mi propio &lt;a href=&#34;https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd&#34;&gt;perfil&lt;/a&gt;&lt;/li&gt; 102 - &lt;li&gt;Un servidor &lt;em&gt;knot&lt;/em&gt; en &lt;code&gt;knot1.tngl.vylion.com&lt;/code&gt; para &lt;a href=&#34;https://tangled.org/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd&#34;&gt;mis propios&lt;/a&gt; repositorios de &lt;a href=&#34;https://tangled.org/&#34;&gt;Tangled&lt;/a&gt;&lt;/li&gt; 103 - &lt;/ul&gt; 104 - &lt;p&gt;Ahora mismo estoy usando un teclado mecรกnico de construcciรณn personalizada, corriendo mi propio &lt;em&gt;firmware&lt;/em&gt; desarrollado con &lt;a href=&#34;https://qmk.fm/&#34;&gt;QMK&lt;/a&gt; en C++.&lt;/p&gt; 105 - &lt;p&gt;En el pasado desarrollรฉ un &lt;a href=&#34;https://github.com/vylion/velascobot&#34;&gt;robot de texto de cadenas Markov&lt;/a&gt; para &lt;a href=&#34;https://telegram.org/&#34;&gt;Telegram&lt;/a&gt;.&lt;/p&gt; 106 - &lt;p&gt;Actualmente estoy interesado en aprender tambiรฉn JavaScript, TypeScript y React para desarrollo &lt;em&gt;fullstack&lt;/em&gt;.&lt;/p&gt; 107 - &lt;h1 id=&#34;contacto&#34;&gt;Contacto&lt;/h1&gt; 108 - &lt;p&gt;Respondo al correo electrรณnico en &lt;code&gt;gserrahima [arroba] mailbox.org&lt;/code&gt;.&lt;/p&gt; 109 - &lt;p&gt;Actualmente vivo en &lt;code&gt;Esplugues de Llobregat&lt;/code&gt;, en Espaรฑa, Europa.&lt;/p&gt; 110 - &lt;p&gt;Mi nรบmero de telรฉfono es &lt;code&gt;(+ ES Prefix) 637 911 884&lt;/code&gt;. Puedo ser contactado a travรฉs de:&lt;/p&gt; 111 - &lt;ul&gt; 112 - &lt;li&gt;Llamadas&lt;/li&gt; 113 - &lt;li&gt;WhatsApp&lt;/li&gt; 114 - &lt;li&gt;Telegram&lt;/li&gt; 115 - &lt;/ul&gt; 116 - &lt;blockquote&gt; 117 - &lt;p&gt;[!NOTE] 118 - Por favor incluid el motivo de contacto en el primer mensaje de WhatsApp o Telegram para evitar el filtrado como spam.&lt;/p&gt; 119 - &lt;/blockquote&gt; 120 - </content> 121 - </item> 122 - 123 - </channel> 124 - </rss>
···
-9
public/es/page/1/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="es-es"> 3 - <head> 4 - <title>https://vylion.com/es/</title> 5 - <link rel="canonical" href="https://vylion.com/es/"> 6 - <meta charset="utf-8"> 7 - <meta http-equiv="refresh" content="0; url=https://vylion.com/es/"> 8 - </head> 9 - </html>
···
-53
public/es/sitemap.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 3 - xmlns:xhtml="http://www.w3.org/1999/xhtml"> 4 - <url> 5 - <loc>https://vylion.com/es/categories/</loc> 6 - <xhtml:link 7 - rel="alternate" 8 - hreflang="en-us" 9 - href="https://vylion.com/en/categories/" 10 - /> 11 - <xhtml:link 12 - rel="alternate" 13 - hreflang="es-es" 14 - href="https://vylion.com/es/categories/" 15 - /> 16 - </url><url> 17 - <loc>https://vylion.com/es/cv/</loc> 18 - <xhtml:link 19 - rel="alternate" 20 - hreflang="en-us" 21 - href="https://vylion.com/en/cv/" 22 - /> 23 - <xhtml:link 24 - rel="alternate" 25 - hreflang="es-es" 26 - href="https://vylion.com/es/cv/" 27 - /> 28 - </url><url> 29 - <loc>https://vylion.com/es/</loc> 30 - <xhtml:link 31 - rel="alternate" 32 - hreflang="en-us" 33 - href="https://vylion.com/en/" 34 - /> 35 - <xhtml:link 36 - rel="alternate" 37 - hreflang="es-es" 38 - href="https://vylion.com/es/" 39 - /> 40 - </url><url> 41 - <loc>https://vylion.com/es/tags/</loc> 42 - <xhtml:link 43 - rel="alternate" 44 - hreflang="en-us" 45 - href="https://vylion.com/en/tags/" 46 - /> 47 - <xhtml:link 48 - rel="alternate" 49 - hreflang="es-es" 50 - href="https://vylion.com/es/tags/" 51 - /> 52 - </url> 53 - </urlset>
···
-204
public/es/tags/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="es"> 3 - <head> 4 - 5 - <title>Tags :: Guillermo Serrahima</title> 6 - 7 - <meta http-equiv="content-type" content="text/html; charset=utf-8"> 8 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 - <meta name="description" content="" /> 10 - <meta name="keywords" content="" /> 11 - 12 - <meta name="robots" content="noodp" /> 13 - 14 - <link rel="canonical" href="https://vylion.com/es/tags/" /> 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - <link rel="stylesheet" href="https://vylion.com/styles.css"> 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - <link rel="shortcut icon" href="https://vylion.com/favicon.png"> 36 - 37 - 38 - 39 - <meta name="twitter:card" content="summary" /> 40 - 41 - 42 - 43 - <meta property="og:locale" content="es" /> 44 - <meta property="og:type" content="website" /> 45 - <meta property="og:title" content="Tags"> 46 - <meta property="og:description" content="" /> 47 - <meta property="og:url" content="https://vylion.com/es/tags/" /> 48 - <meta property="og:site_name" content="Guillermo Serrahima" /> 49 - 50 - 51 - <meta property="og:image" content="https://vylion.com/favicon.png"> 52 - 53 - 54 - <meta property="og:image:width" content="1200"> 55 - <meta property="og:image:height" content="627"> 56 - 57 - 58 - 59 - 60 - 61 - <link href="/es/tags/index.xml" rel="alternate" type="application/rss+xml" title="Guillermo Serrahima" /> 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - </head> 76 - <body class="blue"> 77 - 78 - 79 - 80 - 81 - <div class="container center headings--one-size"> 82 - 83 - <header class="header"> 84 - <div class="header__inner"> 85 - <div class="header__logo"> 86 - <a href="https://vylion.com/"> 87 - <div class="logo"> 88 - guillermo serrahima 89 - </div> 90 - </a> 91 - 92 - </div> 93 - 94 - <ul class="menu menu--mobile"> 95 - <li class="menu__trigger">Menu&nbsp;โ–พ</li> 96 - <li> 97 - <ul class="menu__dropdown"> 98 - 99 - 100 - <li><a href="/es/cv">cv</a></li> 101 - 102 - 103 - 104 - <li><a href="https://git.vylion.com/vylion">proyectos</a></li> 105 - 106 - 107 - 108 - <hr /> 109 - 110 - <li> 111 - <a href="https://vylion.com/en/">English</a> 112 - </li> 113 - 114 - <li> 115 - <a href="https://vylion.com/es/">Espaรฑol</a> 116 - </li> 117 - 118 - 119 - </ul> 120 - </li> 121 - </ul> 122 - 123 - 124 - 125 - <ul class="menu menu--desktop menu--language-selector"> 126 - <li class="menu__trigger">Espaรฑol&nbsp;โ–พ</li> 127 - <li> 128 - <ul class="menu__dropdown"> 129 - 130 - <li><a href="https://vylion.com/en/">English</a></li> 131 - 132 - <li><a href="https://vylion.com/es/">Espaรฑol</a></li> 133 - 134 - </ul> 135 - </li> 136 - </ul> 137 - 138 - 139 - </div> 140 - 141 - <nav class="navigation-menu"> 142 - <ul class="navigation-menu__inner menu--desktop"> 143 - 144 - 145 - 146 - <li><a href="/es/cv" >cv</a></li> 147 - 148 - 149 - 150 - <li><a href="https://git.vylion.com/vylion" >proyectos</a></li> 151 - 152 - 153 - 154 - </ul> 155 - </nav> 156 - 157 - 158 - </header> 159 - 160 - 161 - <div class="content"> 162 - 163 - <div class="terms"> 164 - <h1>Tags</h1> 165 - 166 - <ul> 167 - 168 - 169 - </ul> 170 - </div> 171 - 172 - </div> 173 - 174 - 175 - <footer class="footer"> 176 - <div class="footer__inner"> 177 - 178 - <div class="copyright"> 179 - <span>ยฉ 2026 Powered by <a href="https://gohugo.io">Hugo</a></span> 180 - 181 - <span>:: <a href="https://github.com/mirus-ua/hugo-theme-re-terminal" target="_blank">Theme</a> made by <a href="https://github.com/mirus-ua" target="_blank">Mirus</a></span> 182 - </div> 183 - </div> 184 - </footer> 185 - 186 - 187 - 188 - 189 - 190 - 191 - <script type="text/javascript" src="/bundle.min.js"></script> 192 - 193 - 194 - 195 - 196 - 197 - 198 - 199 - 200 - 201 - </div> 202 - 203 - </body> 204 - </html>
···
-10
public/es/tags/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Tags on Guillermo Serrahima</title> 5 - <link>https://vylion.com/es/tags/</link> 6 - <description>Recent content in Tags on Guillermo Serrahima</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>es-es</language><atom:link href="https://vylion.com/es/tags/index.xml" rel="self" type="application/rss+xml" /> 9 - </channel> 10 - </rss>
···
public/favicon.png

This is a binary file and will not be displayed.

public/fonts/FiraCode-Bold.woff

This is a binary file and will not be displayed.

public/fonts/FiraCode-Bold.woff2

This is a binary file and will not be displayed.

public/fonts/FiraCode-Regular.woff

This is a binary file and will not be displayed.

public/fonts/FiraCode-Regular.woff2

This is a binary file and will not be displayed.

+93
public/fonts/LICENSE
···
··· 1 + Copyright (c) 2014, The Fira Code Project Authors (https://github.com/tonsky/FiraCode) 2 + 3 + This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 + This license is copied below, and is also available with a FAQ at: 5 + http://scripts.sil.org/OFL 6 + 7 + 8 + ----------------------------------------------------------- 9 + SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 + ----------------------------------------------------------- 11 + 12 + PREAMBLE 13 + The goals of the Open Font License (OFL) are to stimulate worldwide 14 + development of collaborative font projects, to support the font creation 15 + efforts of academic and linguistic communities, and to provide a free and 16 + open framework in which fonts may be shared and improved in partnership 17 + with others. 18 + 19 + The OFL allows the licensed fonts to be used, studied, modified and 20 + redistributed freely as long as they are not sold by themselves. The 21 + fonts, including any derivative works, can be bundled, embedded, 22 + redistributed and/or sold with any software provided that any reserved 23 + names are not used by derivative works. The fonts and derivatives, 24 + however, cannot be released under any other type of license. The 25 + requirement for fonts to remain under this license does not apply 26 + to any document created using the fonts or their derivatives. 27 + 28 + DEFINITIONS 29 + "Font Software" refers to the set of files released by the Copyright 30 + Holder(s) under this license and clearly marked as such. This may 31 + include source files, build scripts and documentation. 32 + 33 + "Reserved Font Name" refers to any names specified as such after the 34 + copyright statement(s). 35 + 36 + "Original Version" refers to the collection of Font Software components as 37 + distributed by the Copyright Holder(s). 38 + 39 + "Modified Version" refers to any derivative made by adding to, deleting, 40 + or substituting -- in part or in whole -- any of the components of the 41 + Original Version, by changing formats or by porting the Font Software to a 42 + new environment. 43 + 44 + "Author" refers to any designer, engineer, programmer, technical 45 + writer or other person who contributed to the Font Software. 46 + 47 + PERMISSION & CONDITIONS 48 + Permission is hereby granted, free of charge, to any person obtaining 49 + a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 + redistribute, and sell modified and unmodified copies of the Font 51 + Software, subject to the following conditions: 52 + 53 + 1) Neither the Font Software nor any of its individual components, 54 + in Original or Modified Versions, may be sold by itself. 55 + 56 + 2) Original or Modified Versions of the Font Software may be bundled, 57 + redistributed and/or sold with any software, provided that each copy 58 + contains the above copyright notice and this license. These can be 59 + included either as stand-alone text files, human-readable headers or 60 + in the appropriate machine-readable metadata fields within text or 61 + binary files as long as those fields can be easily viewed by the user. 62 + 63 + 3) No Modified Version of the Font Software may use the Reserved Font 64 + Name(s) unless explicit written permission is granted by the corresponding 65 + Copyright Holder. This restriction only applies to the primary font name as 66 + presented to the users. 67 + 68 + 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 + Software shall not be used to promote, endorse or advertise any 70 + Modified Version, except to acknowledge the contribution(s) of the 71 + Copyright Holder(s) and the Author(s) or with their explicit written 72 + permission. 73 + 74 + 5) The Font Software, modified or unmodified, in part or in whole, 75 + must be distributed entirely under this license, and must not be 76 + distributed under any other license. The requirement for fonts to 77 + remain under this license does not apply to any document created 78 + using the Font Software. 79 + 80 + TERMINATION 81 + This license becomes null and void if any of the above conditions are 82 + not met. 83 + 84 + DISCLAIMER 85 + THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 + OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 + COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 + INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 + DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 + FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 + OTHER DEALINGS IN THE FONT SOFTWARE.
+11
public/images/social_icons/LICENSE
···
··· 1 + Most icons in this directory are downloaded from [Font Awesome]. They are part 2 + of the [free offer] and are licensed under [CC BY 4.0]. 3 + 4 + [Font Awesome]: https://fontawesome.com/ 5 + [free offer]: https://fontawesome.com/license/free 6 + [CC BY 4.0]: https://creativecommons.org/licenses/by/4.0/ 7 + 8 + Exceptions: 9 + - Atom, licensed under [CC0](https://creativecommons.org/publicdomain/zero/1.0/) by [Eyal Kalderon](https://eyalkalderon.com/). Source (prior to modification in Inkscape): https://commons.wikimedia.org/wiki/File:Application_atom%2Bxml.svg 10 + - Keybase, licensed under [CC0](https://creativecommons.org/publicdomain/zero/1.0/) by [Simple Icons](https://simpleicons.org/). Source: https://github.com/simple-icons/simple-icons/blob/develop/icons/keybase.svg 11 + - Keyoxide, licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by the [Keyoxide Project](https://codeberg.org/keyoxide/keyoxide-artwork). Source: https://codeberg.org/keyoxide/keyoxide-web/src/commit/569fcf1/static-src/files/img/keyoxide.svg
+1
public/images/social_icons/atom.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="-25 -26.75 50 50"><path d="m 20,5 c -2.215061,0 -4,1.7849387 -4,4 0,2.215061 1.784939,4 4,4 2.215061,0 4,-1.784939 4,-4 0,-2.2150613 -1.784939,-4 -4,-4 z m -40,0 c -2.215061,0 -4,1.7849387 -4,4 0,2.215061 1.784939,4 4,4 2.215061,0 4,-1.784939 4,-4 0,-2.2150613 -1.784939,-4 -4,-4 z M 0,-26 c -2.2150613,0 -4,1.784939 -4,4 0,2.215061 1.7849387,4 4,4 2.2150613,0 4,-1.784939 4,-4 0,-2.215061 -1.7849387,-4 -4,-4 z m 0,20 c -3.3196308,0 -6,2.6803692 -6,6 0,3.3196308 2.6803692,6 6,6 C 3.3196308,6 6,3.3196308 6,0 6,-3.3196308 3.3196308,-6 0,-6 Z M -5,-21.941406 C -15.016622,-19.666091 -22.5,-10.702303 -22.5,0 c 0,1.5215429 0.151155,3.0082575 0.439453,4.4453125 0.303447,-0.1379177 0.623158,-0.246965 0.955078,-0.3222656 C -21.364332,2.7886652 -21.5,1.4104072 -21.5,0 c 0,-10.198695 7.090329,-18.732318 16.6132813,-20.943359 C -4.956536,-21.266022 -4.9960716,-21.599168 -5,-21.941406 Z m 10,0 c -0.00393,0.342238 -0.043464,0.675384 -0.1132813,0.998047 C 14.409671,-18.732318 21.5,-10.198695 21.5,0 c 0,1.4104072 -0.135668,2.7886652 -0.394531,4.1230469 0.331919,0.075301 0.651632,0.1843481 0.955078,0.3222656 C 22.348845,3.0082574 22.5,1.521543 22.5,0 22.5,-10.702303 15.016622,-19.666091 5,-21.941406 Z m -22.083984,35 c -0.270321,0.194772 -0.562364,0.363552 -0.869141,0.501953 C -13.844268,18.99004 -7.3292479,22.5 0,22.5 7.3292479,22.5 13.844268,18.99004 17.953125,13.560547 17.646348,13.422146 17.354305,13.253366 17.083984,13.058594 13.155961,18.191093 6.9669574,21.5 0,21.5 c -6.9669574,0 -13.155961,-3.308907 -17.083984,-8.441406 z M 18.826172,-9.8632813 c -0.255464,0.00159 -0.533918,0.022037 -0.837891,0.054687 -1.215891,0.1306001 -2.835986,0.4960661 -4.78125,1.0625 -2.533579,0.7377433 -5.6122163,1.8166747 -8.988281,3.1640626 0.2983595,0.2260913 0.5794973,0.4760734 0.8378906,0.7460937 3.1711157,-1.2513933 6.0561644,-2.2555596 8.4316404,-2.9472656 1.912574,-0.5569153 3.499271,-0.9120128 4.609375,-1.03125 0.277527,-0.029809 0.523875,-0.043491 0.736328,-0.044922 0.212454,-0.00143 0.390497,0.010196 0.525391,0.033203 0.133381,0.022749 0.206862,0.052844 0.246094,0.072266 -0.164313,-0.367593 -0.306238,-0.7472047 -0.490235,-1.1035156 -0.09289,-0.00491 -0.189538,-0.00648 -0.289062,-0.00586 z m 1.697265,0.6503907 c 0.02711,0.06026 0.04958,0.123054 0.07617,0.1835937 -0.01193,-0.04108 -0.0267,-0.082129 -0.04492,-0.1230469 -0.0095,-0.021321 -0.02056,-0.040487 -0.03125,-0.060547 z M 19.625,-8.7109375 c -0.01162,0.04164 -0.03824,0.1149281 -0.111328,0.2304687 -0.146328,0.2312815 -0.437808,0.5570958 -0.853516,0.9296876 -0.831415,0.7451831 -2.155979,1.6876577 -3.849609,2.7363281 -2.103133,1.3022281 -4.779148,2.7746372 -7.8300783,4.29296873 C 6.9932435,-0.34904854 7,-0.175646 7,0 7,0.20125365 6.991337,0.40066067 6.9746094,0.59765625 10.23333,-1.0092335 13.09305,-2.5741285 15.335938,-3.9628906 c 1.722577,-1.0665941 3.079589,-2.0256019 3.990234,-2.8417969 0.316865,-0.2840007 0.580347,-0.5491596 0.789062,-0.8066406 C 19.97247,-7.9887616 19.788046,-8.3440051 19.625,-8.7109375 Z M -6.9746094,-0.59765625 C -10.233329,1.0092335 -13.09305,2.5741285 -15.335938,3.9628906 c -0.590929,0.3658943 -1.138999,0.7194437 -1.640624,1.0585938 0.273188,0.2081686 0.524887,0.4442478 0.75,0.703125 0.436932,-0.2920141 0.909837,-0.5967385 1.416015,-0.9101563 2.103133,-1.3022282 4.779148,-2.7746372 7.8300783,-4.29296873 C -6.9932435,0.34904855 -7,0.17564599 -7,0 c 0,-0.20125361 0.00866,-0.4006607 0.025391,-0.59765625 z M -5.0566406,4.8359375 C -8.2277563,6.0873308 -11.112805,7.0914971 -13.488281,7.7832031 -14.041195,7.9442039 -14.567699,8.0883994 -15.0625,8.2148438 -15.02191,8.4707307 -15,8.7329344 -15,9 c 0,0.078905 -0.0022,0.1583035 -0.0059,0.2363281 0.562993,-0.1409023 1.163774,-0.3053153 1.798828,-0.4902343 2.53362,-0.7377433 5.6122573,-1.8166747 8.988322,-3.1640626 C -4.5171095,5.3559399 -4.7982473,5.1059578 -5.0566406,4.8359375 Z M -18.826172,-9.8632813 c -0.09952,-6.179e-4 -0.196172,9.54e-4 -0.289062,0.00586 -0.183997,0.3563109 -0.325922,0.7359226 -0.490235,1.1035156 0.03923,-0.019416 0.112706,-0.049504 0.246094,-0.072266 0.134894,-0.023007 0.312937,-0.034634 0.525391,-0.033203 0.212453,0.00143 0.458801,0.015113 0.736328,0.044922 1.110104,0.1192372 2.696801,0.4743347 4.609375,1.03125 2.375478,0.6917067 5.2605212,1.6958707 8.4316404,2.9472656 0.2583882,-0.2700232 0.5395341,-0.5200008 0.8378906,-0.7460937 -3.3760628,-1.347387 -6.454704,-2.4263196 -8.988281,-3.1640626 -1.945264,-0.5664339 -3.565359,-0.9318999 -4.78125,-1.0625 -0.303973,-0.03265 -0.582427,-0.053101 -0.837891,-0.054688 z m -1.697265,0.6503907 c -0.01069,0.02006 -0.02176,0.039226 -0.03125,0.060547 -0.01822,0.040918 -0.03299,0.081967 -0.04492,0.1230469 0.0266,-0.06054 0.04906,-0.1233339 0.07617,-0.1835939 z m 0.898437,0.5019531 c -0.163046,0.3669324 -0.34747,0.7221759 -0.490234,1.0996094 0.208715,0.257481 0.472197,0.5226399 0.789062,0.8066406 0.910645,0.816195 2.267657,1.7752028 3.990234,2.8417969 1.963831,1.2159743 4.400698,2.5669168 7.164063,3.9628906 0.3671392,-0.18546998 0.7388588,-0.37174662 1.1171875,-0.55859375 -3.0206095,-1.50545905 -5.6695215,-2.96403065 -7.7558595,-4.25585935 -1.69363,-1.0486704 -3.018194,-1.991145 -3.849609,-2.7363281 -0.415708,-0.3725918 -0.707188,-0.6984061 -0.853516,-0.9296876 -0.07309,-0.1155281 -0.09971,-0.1888228 -0.111328,-0.2304687 z m 26.5996094,8.11328125 c 0.00216,0.0253704 0.00397,0.050726 0.00586,0.0761719 0.024644,-0.0122643 0.049624,-0.0248511 0.074219,-0.0371094 -0.026614,-0.0131441 -0.053411,-0.0259127 -0.080078,-0.0390625 z M 8.171875,0 C 7.8047358,0.18546998 7.4330162,0.37174662 7.0546875,0.55859375 10.075297,2.0640528 12.724209,3.5226244 14.810547,4.8144531 c 0.506178,0.3134178 0.979083,0.6181422 1.416015,0.9101563 0.225113,-0.2588772 0.476812,-0.4949564 0.75,-0.703125 C 16.474937,4.6823343 15.926867,4.3287849 15.335938,3.9628906 13.372107,2.7469163 10.93524,1.3959738 8.171875,0 Z M -6.9804687,0.52148437 c -0.024644,0.0122643 -0.049624,0.0248511 -0.074219,0.0371094 0.026614,0.0131441 0.053411,0.0259127 0.080078,0.0390625 -0.00216,-0.0253704 -0.00397,-0.050726 -0.00586,-0.0761719 z M 5.0566406,4.8359375 C 4.7982524,5.1059607 4.5171065,5.3559383 4.21875,5.5820312 c 3.3760628,1.347387 6.454704,2.4263196 8.988281,3.1640626 0.635054,0.184919 1.235835,0.349332 1.798828,0.4902343 C 15.002222,9.1583035 15,9.0789054 15,9 15,8.7329344 15.02191,8.4707307 15.0625,8.2148438 14.567699,8.0883994 14.041195,7.9442039 13.488281,7.7832031 11.112803,7.0914964 8.2277598,6.0873324 5.0566406,4.8359375 Z M -2.3144531,-17.570312 c -0.1068846,0.601064 -0.2079011,1.251821 -0.3027344,1.947265 -0.3565005,2.614337 -0.6230454,5.8642731 -0.765625,9.4960939 0.3253152,-0.1804077 0.667235,-0.3354745 1.0214844,-0.4628906 0.1464595,-3.4046565 0.4021315,-6.4476633 0.7363281,-8.8984373 0.082388,-0.60418 0.1703696,-1.172697 0.2617188,-1.701172 -0.3321646,-0.09445 -0.6508379,-0.223138 -0.9511719,-0.380859 z m 4.6289062,0 c -0.300334,0.157721 -0.6190073,0.286404 -0.9511719,0.380859 0.091349,0.528475 0.1793306,1.096992 0.2617188,1.701172 0.3341968,2.450776 0.5898687,5.4937783 0.7363281,8.8984373 0.3542481,0.1274164 0.696168,0.2824833 1.0214844,0.4628906 C 3.240233,-9.7587764 2.9736882,-13.008708 2.6171875,-15.623047 2.5223542,-16.318491 2.4213377,-16.969248 2.3144531,-17.570312 Z M -3.3828125,6.1269531 c 0.1425795,3.6318233 0.4091243,6.8817549 0.765625,9.4960939 0.2737467,2.007476 0.5974177,3.636889 0.9726563,4.800781 0.129425,0.401443 0.2632236,0.747211 0.4121093,1.041016 C -0.82453295,21.487866 -0.41368517,21.5 0,21.5 0.41368517,21.5 0.82453295,21.48787 1.2324219,21.46484 1.3813076,21.171039 1.5151062,20.825271 1.6445312,20.423828 2.0197698,19.259936 2.3434408,17.630523 2.6171875,15.623047 2.973688,13.00871 3.2402329,9.7587739 3.3828125,6.1269531 3.0574973,6.3073608 2.7155775,6.4624276 2.3613281,6.5898437 2.2148686,9.9945002 1.9591966,13.037507 1.625,15.488281 1.3558535,17.462022 1.0339978,19.054558 0.69140625,20.117187 0.52011045,20.648502 0.34122221,21.047643 0.18945312,21.275391 0.09199353,21.42164 0.02483219,21.472433 0,21.490234 -0.02482169,21.472433 -0.09197642,21.421641 -0.18945312,21.275391 -0.34122222,21.047643 -0.52011045,20.648503 -0.69140625,20.117187 -1.0339978,19.054558 -1.3558535,17.462022 -1.625,15.488281 -1.9591968,13.037505 -2.2148687,9.9945027 -2.3613281,6.5898437 -2.7155762,6.4624273 -3.0574961,6.3073604 -3.3828125,6.1269531 Z m 3.28125,16.3671879 C -0.06836288,22.497642 -0.03465715,22.5 0,22.5 c -0.03436788,0 -0.06723059,-0.0057 -0.1015625,-0.0059 z M 0,22.5 c 0.03465715,0 0.06836288,-0.0024 0.1015625,-0.0059 C 0.06723059,22.494295 0.03436788,22.5 0,22.5 Z" /></svg>
+1
public/images/social_icons/bitcoin.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"/></svg>
+1
public/images/social_icons/bluesky.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M407.8 294.7c-3.3-.4-6.7-.8-10-1.3c3.4 .4 6.7 .9 10 1.3zM288 227.1C261.9 176.4 190.9 81.9 124.9 35.3C61.6-9.4 37.5-1.7 21.6 5.5C3.3 13.8 0 41.9 0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7c3.3-.5 6.6-.9 10-1.4c-3.3 .5-6.6 1-10 1.4C74.3 308.6-9.1 342.8 100.3 464.5C220.6 589.1 265.1 437.8 288 361.1c22.9 76.7 49.2 222.5 185.6 103.4c102.4-103.4 28.1-156-65.8-169.9c-3.3-.4-6.7-.8-10-1.3c3.4 .4 6.7 .9 10 1.3c64.1 7.1 133.6-15.1 153.2-80.7C566.9 194 576 75 576 58.4s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8C385.1 81.9 314.1 176.4 288 227.1z"/></svg>
+3
public/images/social_icons/codeberg.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4.233 4.233"> 2 + <path d="M0 2.265c0 .398.112.788.323 1.125l1.765-2.281c.013-.016.044-.016.057 0l.737.953h-.528l.011.042h.549l.156.201h-.648l.018.066h.681l.137.177H2.49l.024.085h.81l.122.158h-.888l.029.104h.939l.107.139H2.625l.032.115h1.065l.099.128H2.693l.032.115H3.91c.211-.337.323-.727.323-1.125 0-1.169-.947-2.116-2.117-2.116S0 1.096 0 2.265zm2.761 1.253l.032.115h.939l.091-.115zm.068.243l.032.115h.628l.126-.115zm.067.243l.032.114h.212l.184-.114z" paint-order="markers fill stroke"/> 3 + </svg>
+1
public/images/social_icons/discord.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"/></svg>
+1
public/images/social_icons/email.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg>
+1
public/images/social_icons/facebook.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"/></svg>
+1
public/images/social_icons/flickr.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M400 32L48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48zM144.5 192a63.5 63.5 0 1 1 0 127 63.5 63.5 0 1 1 0-127zm159 0a63.5 63.5 0 1 1 0 127 63.5 63.5 0 1 1 0-127z"/></svg>
+4
public/images/social_icons/forgejo.svg
···
··· 1 + <!-- CC-BY - https://github.com/reiver/fediverse-icons --> 2 + <svg id="icon" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> 3 + <path fill-rule="evenodd" clip-rule="evenodd" d="M181 77C123.562 77 77 123.562 77 181V332C77 389.438 123.562 436 181 436H332C389.438 436 436 389.438 436 332V181C436 123.562 389.438 77 332 77H181ZM303.03 151.269C294.762 151.269 288.06 157.971 288.06 166.239C288.06 174.506 294.762 181.209 303.03 181.209C311.297 181.209 318 174.506 318 166.239C318 157.971 311.297 151.269 303.03 151.269ZM271.173 157.714C274.93 143.638 287.769 133.269 303.03 133.269C321.239 133.269 336 148.03 336 166.239C336 184.448 321.239 199.209 303.03 199.209C288.153 199.209 275.577 189.355 271.473 175.818C242.538 179.872 220.271 204.724 220.271 234.777V275.467C232.746 260.426 250.741 250.13 271.15 247.686C274.879 233.566 287.739 223.156 303.03 223.156C321.239 223.156 336 237.917 336 256.126C336 274.335 321.239 289.096 303.03 289.096C288.188 289.096 275.637 279.289 271.503 265.802C245.851 269.666 225.495 289.692 221.136 315.179C234.719 319.254 244.615 331.852 244.615 346.762C244.615 364.971 229.854 379.732 211.645 379.732C193.436 379.732 178.675 364.971 178.675 346.762C178.675 331.81 188.629 319.182 202.271 315.144V234.777C202.271 194.874 232.414 162.01 271.173 157.714ZM288.06 256.126C288.06 247.858 294.762 241.156 303.03 241.156C311.297 241.156 318 247.858 318 256.126C318 264.394 311.297 271.096 303.03 271.096C294.762 271.096 288.06 264.394 288.06 256.126ZM196.675 346.762C196.675 338.494 203.378 331.792 211.645 331.792C219.913 331.792 226.615 338.494 226.615 346.762C226.615 355.029 219.913 361.732 211.645 361.732C203.378 361.732 196.675 355.029 196.675 346.762Z"/> 4 + </svg>
+5
public/images/social_icons/gitea.svg
···
··· 1 + <!-- CC-BY - https://github.com/reiver/fediverse-icons --> 2 + <svg id="icon" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> 3 + <path d="M111 262C91.374 262 72.5518 254.204 58.6741 240.326C44.7964 226.448 37 207.626 37 188C37 168.374 44.7964 149.552 58.6741 135.674C72.5518 121.796 91.374 114 111 114L123 114" stroke-width="18"/> 4 + <path fill-rule="evenodd" clip-rule="evenodd" d="M158 76C131.49 76 110 97.4903 110 124V285.5C110 367.79 176.71 434.5 259 434.5H334C416.29 434.5 483 367.79 483 285.5V124C483 97.4903 461.51 76 435 76H158ZM323 161.201V93.5H305V150.808L288.773 141.44C273.946 132.879 254.987 137.96 246.426 152.787L182.121 264.167C173.561 278.994 178.641 297.953 193.468 306.514L304.848 370.819C319.675 379.379 338.634 374.299 347.195 359.472L411.5 248.092C420.06 233.265 414.98 214.306 400.153 205.745L323 161.201ZM316.845 178.432L391.153 221.334C397.371 224.924 399.501 232.874 395.912 239.092L331.606 350.472C328.016 356.69 320.066 358.82 313.848 355.231L202.468 290.925C196.25 287.335 194.12 279.385 197.709 273.167L262.015 161.787C265.605 155.569 273.555 153.438 279.773 157.028L301.257 169.432L291.498 186.335C284.705 186.123 278.018 189.561 274.382 195.859C270.746 202.157 271.112 209.667 274.692 215.444L253.853 251.539C247.06 251.328 240.372 254.765 236.736 261.063C231.473 270.18 234.597 281.838 243.713 287.101C252.83 292.365 264.488 289.241 269.751 280.124C273.387 273.826 273.021 266.316 269.441 260.538L290.28 224.445C293.284 224.538 296.268 223.918 298.976 222.652L329.227 240.118L305.306 281.551C298.702 281.535 292.273 284.956 288.735 291.085C283.471 300.202 286.595 311.859 295.711 317.123C304.828 322.386 316.486 319.263 321.749 310.146C325.481 303.682 324.997 295.941 321.15 290.108L353.816 233.529L309.763 208.095C310.398 203.65 309.433 199.12 307.087 195.334L316.845 178.432Z"/> 5 + </svg>
+1
public/images/social_icons/github.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+1
public/images/social_icons/gitlab.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"/></svg>
+1
public/images/social_icons/instagram.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"/></svg>
+1
public/images/social_icons/keybase.svg
···
··· 1 + <svg id="icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Keybase</title><path d="M10.445 21.372a.953.953 0 1 1-.955-.954c.524 0 .951.43.951.955m5.923-.001a.953.953 0 1 1-.958-.954c.526 0 .954.43.954.955m4.544-9.16l-.156-.204c-.046-.06-.096-.116-.143-.175-.045-.06-.094-.113-.141-.169-.104-.12-.21-.239-.32-.359l-.075-.08-.091-.099-.135-.13c-.015-.019-.032-.035-.05-.054a10.87 10.87 0 0 0-3.955-2.504l-.23-.078.035-.083a4.109 4.109 0 0 0-.12-3.255 4.11 4.11 0 0 0-2.438-2.16c-.656-.216-1.23-.319-1.712-.305-.033-.105-.1-.577.496-1.848L10.662 0l-.287.399c-.33.455-.648.895-.945 1.328a1.857 1.857 0 0 0-1.245-.58L6.79 1.061h-.012c-.033-.003-.07-.003-.104-.003-.99 0-1.81.771-1.87 1.755l-.088 1.402v.003a1.876 1.876 0 0 0 1.755 1.98l1.002.06c-.065.84.073 1.62.405 2.306a11.28 11.28 0 0 0-3.66 2.484C.912 14.392.912 18.052.912 20.995v1.775l1.305-1.387c.266.93.652 1.807 1.145 2.615H5.06a9.197 9.197 0 0 1-1.68-3.848l1.913-2.03-.985 3.09 1.74-1.267c3.075-2.234 6.745-2.75 10.91-1.53 1.806.533 3.56.04 4.474-1.256l.104-.165c.09.498.14.998.14 1.496 0 1.563-.254 3.687-1.38 5.512h1.612c.776-1.563 1.181-3.432 1.181-5.512-.001-2.2-.786-4.421-2.184-6.274zM8.894 6.192c.122-1.002.577-1.949 1.23-2.97a1.36 1.36 0 0 0 1.283.749c.216-.008.604.025 1.233.232a2.706 2.706 0 0 1 1.608 1.425c.322.681.349 1.442.079 2.15a2.69 2.69 0 0 1-.806 1.108l-.408-.502-.002-.003a1.468 1.468 0 0 0-2.06-.205c-.334.27-.514.66-.534 1.058-1.2-.54-1.8-1.643-1.628-3.04zm4.304 5.11l-.52.425a.228.228 0 0 1-.323-.032l-.11-.135a.238.238 0 0 1 .034-.334l.51-.42-1.056-1.299a.307.307 0 0 1 .044-.436.303.303 0 0 1 .435.041l2.963 3.646a.309.309 0 0 1-.168.499.315.315 0 0 1-.31-.104l-.295-.365-1.045.854a.244.244 0 0 1-.154.055.237.237 0 0 1-.186-.09l-.477-.58a.24.24 0 0 1 .035-.335l1.05-.858-.425-.533zM7.752 4.866l-1.196-.075a.463.463 0 0 1-.435-.488l.09-1.4a.462.462 0 0 1 .461-.437h.024l1.401.091a.459.459 0 0 1 .433.488l-.007.101a9.27 9.27 0 0 0-.773 1.72zm12.525 11.482c-.565.805-1.687 1.08-2.924.718-3.886-1.141-7.397-.903-10.469.7l1.636-5.122-5.29 5.609c.098-3.762 2.452-6.967 5.757-8.312.471.373 1.034.66 1.673.841.16.044.322.074.48.102a1.41 1.41 0 0 0 .21 1.408l.075.09c-.172.45-.105.975.221 1.374l.476.582a1.39 1.39 0 0 0 1.079.513c.32 0 .635-.111.886-.314l.285-.232c.174.074.367.113.566.113a1.45 1.45 0 0 0 .928-.326c.623-.51.72-1.435.209-2.06l-1.67-2.057a4.07 4.07 0 0 0 .408-.38c.135.036.27.077.4.12.266.096.533.197.795.314a9.55 9.55 0 0 1 2.77 1.897c.03.03.06.055.086.083l.17.176c.038.039.076.079.11.12.08.085.16.175.24.267l.126.15c.045.053.086.104.13.16l.114.15c.04.05.079.102.117.154.838 1.149.987 2.329.404 3.157v.005zM7.718 4.115l-.835-.05.053-.836.834.051z"/></svg>
+7
public/images/social_icons/keyoxide.svg
···
··· 1 + <svg id="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2 + <path d="m14.662 2.7734c-0.86914 8.5e-6 -1.5742 0.70509-1.5742 1.5742 0 0.52528 0.26095 1.006 0.67773 1.2949 0.12007 0.083138 0.18912 0.092562 0.20508 0.22266 0.01604 0.13001-0.16211 0.25-0.16211 0.25l-3.3242 2.5859v-0.5293c0.14724-1.4561-0.83223-2.9405-2.2754-3.2793-1.719-0.502-3.7931 1.0298-3.7931 2.6452 0 1.9182 0.00778 8.9247 0.00211 13.429-0.00211 1.6772 1.3577 3.0332 3.0332 3.0332s3.0352-1.3576 3.0352-3.0332v-0.39648c1.365 0.90898 2.7303 1.8174 4.0938 2.7285 1.1299 0.93021 2.9078 0.93859 3.9902-0.07422 1.3712-1.1518 1.323-3.4999-0.0918-4.5957-1.935-1.3219-3.8897-2.6181-5.8418-3.916l5.7734-4.4883c1.1632-0.90466 1.4954-2.5005 0.83398-3.7832-0.04938-0.095755-0.06511-0.12998-0.16797-0.16992-0.10277-0.039938-0.18425 0.00439-0.28711 0.042969-0.14138 0.053062-0.29257 0.080078-0.44531 0.080078-0.69894 0-1.2656-0.56662-1.2656-1.2656 9.4e-5 -0.094853 0.01636-0.14996-0.01172-0.20898-0.02807-0.059023-0.10233-0.097092-0.17578-0.10547-0.12191-0.013926-0.24437-0.020476-0.36719-0.019531-0.12049 8.587e-4 -0.21169-0.00952-0.26367-0.097656-0.05189-0.088142-0.02344-0.18975-0.02344-0.34961 0-0.86915-0.70504-1.5742-1.5742-1.5742z"/> 3 + <path d="m12.806 3.085a1.0735 1.0735 0 0 1-1.0735 1.0735 1.0735 1.0735 0 0 1-1.0735-1.0735 1.0735 1.0735 0 0 1 1.0735-1.0735 1.0735 1.0735 0 0 1 1.0735 1.0735z"/> 4 + <path d="m13.458 1.0033a0.70038 0.70038 0 0 1-0.70038 0.70038 0.70038 0.70038 0 0 1-0.70038-0.70038 0.70038 0.70038 0 0 1 0.70038-0.70038 0.70038 0.70038 0 0 1 0.70038 0.70038z"/> 5 + <path d="m11.339 0.48902a0.48902 0.48902 0 0 1-0.48902 0.48902 0.48902 0.48902 0 0 1-0.48902-0.48902 0.48902 0.48902 0 0 1 0.48902-0.48902 0.48902 0.48902 0 0 1 0.48902 0.48902z"/> 6 + <path d="m19.203 5.1296a0.85797 0.85797 0 0 1-0.85797 0.85797 0.85797 0.85797 0 0 1-0.85797-0.85797 0.85797 0.85797 0 0 1 0.85797-0.85797 0.85797 0.85797 0 0 1 0.85797 0.85797z"/> 7 + </svg>
+1
public/images/social_icons/linkedin.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
+1
public/images/social_icons/mastodon.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
+6
public/images/social_icons/matrix.svg
···
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <svg version="1.1" id="icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 520 520" style="enable-background:new 0 0 520 520;" xml:space="preserve"> 3 + <path d="M13.7,11.9v496.2h35.7V520H0V0h49.4v11.9H13.7z"/> 4 + <path d="M166.3,169.2v25.1h0.7c6.7-9.6,14.8-17,24.2-22.2c9.4-5.3,20.3-7.9,32.5-7.9c11.7,0,22.4,2.3,32.1,6.8 c9.7,4.5,17,12.6,22.1,24c5.5-8.1,13-15.3,22.4-21.5c9.4-6.2,20.6-9.3,33.5-9.3c9.8,0,18.9,1.2,27.3,3.6c8.4,2.4,15.5,6.2,21.5,11.5 c6,5.3,10.6,12.1,14,20.6c3.3,8.5,5,18.7,5,30.7v124.1h-50.9V249.6c0-6.2-0.2-12.1-0.7-17.6c-0.5-5.5-1.8-10.3-3.9-14.3 c-2.2-4.1-5.3-7.3-9.5-9.7c-4.2-2.4-9.9-3.6-17-3.6c-7.2,0-13,1.4-17.4,4.1c-4.4,2.8-7.9,6.3-10.4,10.8c-2.5,4.4-4.2,9.4-5,15.1 c-0.8,5.6-1.3,11.3-1.3,17v103.3h-50.9v-104c0-5.5-0.1-10.9-0.4-16.3c-0.2-5.4-1.3-10.3-3.1-14.9c-1.8-4.5-4.8-8.2-9-10.9 c-4.2-2.7-10.3-4.1-18.5-4.1c-2.4,0-5.6,0.5-9.5,1.6c-3.9,1.1-7.8,3.1-11.5,6.1c-3.7,3-6.9,7.3-9.5,12.9c-2.6,5.6-3.9,13-3.9,22.1 v107.6h-50.9V169.2H166.3z"/> 5 + <path d="M506.3,508.1V11.9h-35.7V0H520v520h-49.4v-11.9H506.3z"/> 6 + </svg>
+1
public/images/social_icons/reddit.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"/></svg>
+1
public/images/social_icons/rss.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
+1
public/images/social_icons/signal.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M194.6 7.5l5.8 23.3C177.7 36.3 156 45.3 136 57.4L123.7 36.8c22-13.3 45.9-23.2 70.9-29.3zm122.9 0l-5.8 23.3C334.3 36.3 356 45.3 376 57.4l12.4-20.6c-22-13.3-46-23.2-71-29.3zM36.8 123.7c-13.3 22-23.2 45.9-29.3 70.9l23.3 5.8C36.3 177.7 45.3 156 57.4 136L36.8 123.7zM24 256c0-11.6 .9-23.3 2.6-34.8L2.9 217.6c-3.8 25.4-3.8 51.3 0 76.7l23.7-3.6C24.9 279.3 24 267.6 24 256zM388.3 475.2L376 454.6c-20 12.1-41.6 21-64.2 26.6l5.8 23.3c24.9-6.2 48.8-16 70.8-29.3zM488 256c0 11.6-.9 23.3-2.6 34.8l23.7 3.6c3.8-25.4 3.8-51.3 0-76.7l-23.7 3.6c1.7 11.5 2.6 23.1 2.6 34.8zm16.5 61.4l-23.3-5.8c-5.6 22.7-14.5 44.3-26.6 64.3l20.6 12.4c13.3-22 23.2-46 29.3-71zm-213.8 168c-23 3.5-46.5 3.5-69.5 0l-3.6 23.7c25.4 3.8 51.3 3.8 76.7 0l-3.6-23.7zm152-91.8c-13.8 18.7-30.4 35.3-49.2 49.1l14.2 19.3c20.7-15.2 39-33.4 54.2-54.1l-19.3-14.4zM393.6 69.2c18.8 13.8 35.3 30.4 49.2 49.2L462.1 104C446.9 83.4 428.6 65.1 408 49.9L393.6 69.2zM69.2 118.4c13.8-18.8 30.4-35.3 49.2-49.2L104 49.9C83.4 65.1 65.1 83.4 49.9 104l19.3 14.4zm406 5.3L454.6 136c12.1 20 21 41.6 26.6 64.2l23.3-5.8c-6.2-24.9-16-48.8-29.3-70.8zm-254-97.1c23-3.5 46.5-3.5 69.5 0l3.6-23.7C268.9-1 243.1-1 217.6 2.9l3.6 23.7zM81.6 468.4L32 480l11.6-49.6L20.2 425 8.6 474.5c-.9 4-.8 8.1 .3 12.1s3.2 7.5 6.1 10.4s6.5 5 10.4 6.1s8.1 1.2 12.1 .3L87 492l-5.4-23.6zM25.2 403.6L48.6 409l8-34.4c-11.7-19.6-20.4-40.8-25.8-63L7.5 317.4c5.2 21.2 13.2 41.7 23.6 60.8l-5.9 25.3zm112 52l-34.4 8 5.4 23.4 25.3-5.9c19.2 10.4 39.6 18.4 60.8 23.6l5.8-23.3c-22.1-5.5-43.3-14.3-62.8-26l-.2 .2zM256 48c-37.2 0-73.6 10-105.6 28.9s-58.4 46-76.3 78.6s-26.9 69.3-25.8 106.4s12 73.3 31.8 104.8L60 452l85.3-20c27.3 17.2 58.2 27.8 90.3 31s64.5-1.1 94.6-12.6s57.2-29.8 79-53.6s37.8-52.2 46.8-83.2s10.5-63.6 4.7-95.3s-19-61.6-38.4-87.4s-44.5-46.7-73.4-61S288.3 48 256 48z"/></svg>
+1
public/images/social_icons/spotify.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"/></svg>
+1
public/images/social_icons/stackexchange.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M18.1 332.3l412.7 0 0 22c0 37.7-29.3 68-65.3 68l-19 0-86.8 89.7 0-89.7-176.3 0c-36 0-65.3-30.3-65.3-68l0-22zm0-23.6l412.7 0 0-85-412.7 0 0 85zm0-109.4l412.7 0 0-85-412.7 0 0 85zM365.4 0L83.4 0c-36 0-65.3 30.3-65.3 67.7l0 22.3 412.7 0 0-22.3C430.7 30.3 401.4 0 365.4 0z"/></svg>
+1
public/images/social_icons/stackoverflow.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M419 375L223.3 333.7L215.1 373L410.8 414L419 375zM470 288L316.5 159.7L291 190.5L444.5 318.8L470 288zM438.8 327.7L257.5 243L240.8 279.5L422 364L438.8 327.7zM390.3 96L358.3 120L477.6 280.3L509.6 256.3L390.3 96zM410.8 424L210.8 424L210.8 463.7L410.8 463.7L410.8 424zM450.5 504L171 504L171 384L131 384L131 544L490.5 544L490.5 384L450.5 384L450.5 504z"/></svg>
+1
public/images/social_icons/steam.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.8 52.8 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3 .1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"/></svg>
+1
public/images/social_icons/telegram.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"/></svg>
+1
public/images/social_icons/x.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg>
+1
public/images/social_icons/youtube.svg
···
··· 1 + <svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
public/img/theme-colors/blue.png

This is a binary file and will not be displayed.

public/img/theme-colors/green.png

This is a binary file and will not be displayed.

public/img/theme-colors/orange.png

This is a binary file and will not be displayed.

public/img/theme-colors/paper.png

This is a binary file and will not be displayed.

public/img/theme-colors/pink.png

This is a binary file and will not be displayed.

public/img/theme-colors/red.png

This is a binary file and will not be displayed.

+113 -7
public/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en-us"> 3 - <head> 4 - <title>https://vylion.com/en/</title> 5 - <link rel="canonical" href="https://vylion.com/en/"> 6 <meta charset="utf-8"> 7 - <meta http-equiv="refresh" content="0; url=https://vylion.com/en/"> 8 - </head> 9 </html>
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + 4 + <head> 5 <meta charset="utf-8"> 6 + <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src-attr 'unsafe-inline'; img-src 'self' data: www.w3.org"> 8 + 9 + <title>guillermo serrahima</title> 10 + 11 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 12 + <link rel="preload" href="https://vylion.com/fonts/FiraCode-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 13 + <link rel="stylesheet" href="https://vylion.com/css/style.css?h=22b8cbf1b9d367db5ee6"> 14 + <script src="https://vylion.com/js/auto-close-popover-on-resize.js?h=4ef87d6fc7b98b22e044" defer></script> 15 + <script src="https://vylion.com/js/copy-code-to-clipboard.js?h=6aac77c47d552a0ac847" defer></script> 16 + 17 + <link rel="canonical" href="https://vylion.com/"> 18 + 19 + <meta name="robots" content="index, follow"> 20 + <meta name="theme-color" content="#211f1a"> 21 + <meta name="color-scheme" content="dark"> 22 + 23 + <meta property="og:title" content="guillermo serrahima"> 24 + <meta property="og:type" content="website"> 25 + <meta property="og:url" content="https://vylion.com/"> 26 + <meta property="og:site_name" content="guillermo serrahima"> 27 + <meta property="og:updated_time" content="2025-12-30T22:59:21.687931718+01:00"> 28 + <meta name="fediverse:creator" content="@me.vylion.com@bsky.brid.gy"> 29 + </head> 30 + 31 + <body class="layout-center"> 32 + <header class="header"> 33 + <div class="header-container"> 34 + <span class="header-logo-container"> 35 + <a href="https://vylion.com"> 36 + <span class="logo">guillermo serrahima</span> 37 + </a> 38 + </span> 39 + </div> 40 + 41 + <!-- translations_list.html --> 42 + 43 + 44 + 45 + 46 + 47 + <nav class="main-menu" aria-label="Translations"> 48 + <a class="skip-to-content" href="#main">Skip to main content</a> 49 + <button class="main-menu-dropdown-button" popovertarget="nav-menu">Menu</button> 50 + <ul id="nav-menu" class="main-menu-items" aria-label="Site Navigation" popover> 51 + 52 + 53 + 54 + <li><a href="https:&#x2F;&#x2F;vylion.com&#x2F;es&#x2F;">ES</a></li> 55 + 56 + 57 + 58 + 59 + 60 + </ul> 61 + </nav> 62 + 63 + </header> 64 + <main id="main"> 65 + <header class="content"> 66 + <p>Hello! I'm Guillermo Serrahima, a Software Engineer from the area of Barcelona, Spain. This is my personal site.</p> 67 + <p>Maybe you'd like to check out the different sections:</p> 68 + </header> 69 + <article class="post"> 70 + <header> 71 + <h2 class="post-title"> 72 + <a href="https://vylion.com/cv/">My CV</a> 73 + </h2> 74 + <ul class="post-meta hidden"> 75 + </ul> 76 + </header> 77 + <p>Skills and previous experience</p> 78 + <a class="read-more" href="https://vylion.com/cv/" aria-label="Read more about My CV">read more โ†’</a> 79 + </article> 80 + </main> 81 + <footer class="footer"> 82 + <address class="socials"> 83 + <ul> 84 + <li> 85 + <a class="social-link" rel="me" href="https://www.linkedin.com/in/ebkalderon" title="linkedin" aria-label="linkedin"> 86 + <svg role="img" aria-label="linkedin icon"> 87 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/linkedin.svg#icon" /> 88 + </svg> 89 + </a> 90 + </li> 91 + <li> 92 + <a class="social-link" rel="me" href="https://sk.vylion.com/@coldrange" title="mastodon" aria-label="mastodon"> 93 + <svg role="img" aria-label="mastodon icon"> 94 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/mastodon.svg#icon" /> 95 + </svg> 96 + </a> 97 + </li> 98 + <li> 99 + <a class="social-link" rel="me" href="https://bsky.app/profile/did:plc:hyyqbqqhpxt2bnn7s2e2iuxd" title="bluesky" aria-label="bluesky"> 100 + <svg role="img" aria-label="bluesky icon"> 101 + <use aria-hidden="true" href="https://vylion.com/images/social_icons/bluesky.svg#icon" /> 102 + </svg> 103 + </a> 104 + </li> 105 + </ul> 106 + </address> 107 + <p class="copyright"> 108 + <span>ยฉ <time>2025</time> Guillermo Serrahima</span> 109 + <span>Powered by <a href="https://www.getzola.org">Zola</a></span> 110 + <span>Theme by <a href="https://eyalkalderon.com">ebkalderon</a></span> 111 + </p> 112 + </footer> 113 + </body> 114 + 115 </html>
-11
public/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>My New Hugo Site</title> 5 - <link>http://localhost:1313/</link> 6 - <description>Recent content on My New Hugo Site</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>en-us</language> 9 - <atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" /> 10 - </channel> 11 - </rss>
···
+8
public/js/auto-close-popover-on-resize.js
···
··· 1 + const menu = document.querySelector("[popover]"); 2 + const query = matchMedia("(min-width: 684px)"); 3 + 4 + query.addEventListener("change", (event) => { 5 + if (event.matches && menu.checkVisibility()) { 6 + menu.hidePopover(); 7 + } 8 + })
+30
public/js/copy-code-to-clipboard.js
···
··· 1 + const code_blocks = document.querySelectorAll("pre code[data-lang]"); 2 + 3 + for (const code_block of code_blocks) { 4 + let content; 5 + if (code_block.parentElement.hasAttribute("data-linenos")) { 6 + content = [...code_block.querySelectorAll("tr")] 7 + .map((row) => row.querySelector("td:last-child")?.innerText ?? "") 8 + .join(""); 9 + } else { 10 + content = code_block.innerText.split("\n").filter(Boolean).join("\n"); 11 + } 12 + 13 + // Copy to clipboard 14 + if (navigator.clipboard !== undefined) { 15 + const copyButton = document.createElement("button"); 16 + copyButton.classList.add("copy-button"); 17 + copyButton.innerText = "Copy"; 18 + 19 + copyButton.addEventListener("click", () => { 20 + copyButton.innerText = "Copied!"; 21 + setTimeout(() => { 22 + copyButton.innerText = "Copy"; 23 + }, 1000); 24 + 25 + navigator.clipboard.writeText(content); 26 + }); 27 + 28 + code_block.prepend(copyButton); 29 + } 30 + }
+211
public/js/theme-switcher.js
···
··· 1 + /** 2 + * Theme Switcher - Runtime theme switching with localStorage persistence 3 + */ 4 + class ThemeSwitcher { 5 + constructor() { 6 + this.themes = { 7 + terminus: "๐Ÿ”ฅ Terminus", 8 + "tokyo-night": "๐ŸŒƒ Tokyo Night", 9 + "solarized-dark": "๐ŸŒ… Solarized", 10 + nord: "โ„๏ธ Nord", 11 + "one-dark": "๐ŸŒ™ One Dark", 12 + "gruvbox-dark": "๐Ÿ‚ Gruvbox", 13 + "oled-abyss": "๐ŸŒ‘ OLED Abyss", 14 + "solar-flare": "โ˜€๏ธ Solar Flare", 15 + }; 16 + 17 + this.currentTheme = this.getStoredTheme(); 18 + this.originalTheme = this.currentTheme; // Track the persistent theme 19 + this.init(); 20 + } 21 + 22 + getStoredTheme() { 23 + // Priority: localStorage > system preference > default 24 + const stored = localStorage.getItem("theme"); 25 + if (stored && this.themes[stored]) { 26 + return stored; 27 + } 28 + 29 + // Fallback if no system preference detected 30 + return document.body.getAttribute("data-theme"); 31 + } 32 + 33 + init() { 34 + this.applyTheme(this.currentTheme); 35 + this.createThemeSelector(); 36 + } 37 + 38 + applyTheme(themeName) { 39 + if (!this.themes[themeName]) return; 40 + 41 + document.body.setAttribute("data-theme", themeName); 42 + localStorage.setItem("theme", themeName); 43 + this.currentTheme = themeName; 44 + this.originalTheme = themeName; // Track the "real" theme 45 + 46 + // Update selector if it exists 47 + const selector = document.querySelector(".theme-selector select"); 48 + if (selector) { 49 + selector.value = themeName; 50 + } 51 + 52 + // Update meta theme-color for browser chrome 53 + this.updateMetaThemeColor(themeName); 54 + } 55 + 56 + previewTheme(themeName) { 57 + if (!this.themes[themeName]) return; 58 + 59 + // Store original theme if not already stored 60 + if (!this.originalTheme) { 61 + this.originalTheme = this.currentTheme; 62 + } 63 + 64 + // Apply preview theme (but don't save to localStorage) 65 + document.body.setAttribute("data-theme", themeName); 66 + this.updateMetaThemeColor(themeName); 67 + } 68 + 69 + restoreTheme() { 70 + if ( 71 + this.originalTheme && 72 + this.originalTheme !== document.body.getAttribute("data-theme") 73 + ) { 74 + document.body.setAttribute("data-theme", this.originalTheme); 75 + this.updateMetaThemeColor(this.originalTheme); 76 + } 77 + } 78 + 79 + updateMetaThemeColor(themeName) { 80 + const themeColors = { 81 + terminus: "#211f1a", 82 + "tokyo-night": "#1a1b26", 83 + "solarized-dark": "#002b36", 84 + nord: "#2e3440", 85 + "one-dark": "#282c34", 86 + "gruvbox-dark": "#282828", 87 + "oled-abyss": "#000000", 88 + "solar-flare": "#ffffff", 89 + }; 90 + 91 + const metaTheme = document.querySelector('meta[name="theme-color"]'); 92 + if (metaTheme && themeColors[themeName]) { 93 + metaTheme.setAttribute("content", themeColors[themeName]); 94 + } 95 + } 96 + 97 + createThemeSelector() { 98 + // Find the menu items list to add theme selector 99 + const menuItems = document.querySelector(".main-menu-items"); 100 + if (!menuItems) { 101 + console.warn("Could not find menu to add theme selector"); 102 + return; 103 + } 104 + 105 + const selectorHTML = ` 106 + <li class="theme-selector"> 107 + <a href="#" class="theme-trigger" aria-expanded="false" aria-haspopup="true"> 108 + Theme โ†“<span class="sr-only"> (click to change theme)</span> 109 + </a> 110 + <ul class="theme-dropdown" role="menu"> 111 + ${Object.entries(this.themes) 112 + .map( 113 + ([key, name]) => 114 + `<li><a href="#" class="theme-option ${key === this.currentTheme ? "terminus" : ""}" data-theme="${key}" role="menuitem">${name}</a></li>`, 115 + ) 116 + .join("")} 117 + </ul> 118 + </li> 119 + `; 120 + 121 + menuItems.insertAdjacentHTML("beforeend", selectorHTML); 122 + 123 + // Add event listeners 124 + const trigger = menuItems.querySelector(".theme-trigger"); 125 + const dropdown = menuItems.querySelector(".theme-dropdown"); 126 + const options = menuItems.querySelectorAll(".theme-option"); 127 + 128 + // Show dropdown on hover and click 129 + const showDropdown = () => { 130 + dropdown.classList.add("show"); 131 + trigger.setAttribute("aria-expanded", "true"); 132 + }; 133 + 134 + const hideDropdown = () => { 135 + dropdown.classList.remove("show"); 136 + trigger.setAttribute("aria-expanded", "false"); 137 + }; 138 + 139 + // Toggle dropdown on click 140 + trigger.addEventListener("click", (e) => { 141 + e.preventDefault(); 142 + const isOpen = dropdown.classList.contains("show"); 143 + if (isOpen) { 144 + hideDropdown(); 145 + } else { 146 + showDropdown(); 147 + } 148 + }); 149 + 150 + // Get the selector container for hover management 151 + const selector = menuItems.querySelector(".theme-selector"); 152 + 153 + // Show on hover (with slight delay to prevent flicker) 154 + let hoverTimeout; 155 + selector.addEventListener("mouseenter", () => { 156 + clearTimeout(hoverTimeout); 157 + showDropdown(); 158 + }); 159 + 160 + // Hide when leaving the entire selector area (with small delay) 161 + selector.addEventListener("mouseleave", () => { 162 + hoverTimeout = setTimeout(() => { 163 + hideDropdown(); 164 + this.restoreTheme(); // Restore original theme when closing dropdown 165 + }, 100); 166 + }); 167 + 168 + // Cancel hide if mouse re-enters 169 + selector.addEventListener("mouseenter", () => { 170 + clearTimeout(hoverTimeout); 171 + }); 172 + 173 + // Theme selection and preview 174 + options.forEach((option) => { 175 + // Preview theme on hover 176 + option.addEventListener("mouseenter", (e) => { 177 + const previewTheme = e.target.dataset.theme; 178 + this.previewTheme(previewTheme); 179 + }); 180 + 181 + // Apply theme permanently on click 182 + option.addEventListener("click", (e) => { 183 + e.preventDefault(); 184 + const theme = e.target.dataset.theme; 185 + this.applyTheme(theme); 186 + 187 + // Update current selection highlighting 188 + options.forEach((opt) => opt.classList.remove("current")); 189 + e.target.classList.add("current"); 190 + 191 + // Close dropdown 192 + hideDropdown(); 193 + }); 194 + }); 195 + 196 + // Close dropdown when clicking outside 197 + document.addEventListener("click", (e) => { 198 + if (!e.target.closest(".theme-selector")) { 199 + hideDropdown(); 200 + this.restoreTheme(); // Restore original theme when clicking outside 201 + } 202 + }); 203 + } 204 + } 205 + 206 + // Initialize when DOM is ready 207 + if (document.readyState === "loading") { 208 + document.addEventListener("DOMContentLoaded", () => new ThemeSwitcher()); 209 + } else { 210 + new ThemeSwitcher(); 211 + }
+4
public/robots.txt
···
··· 1 + User-agent: * 2 + Disallow: 3 + Allow: / 4 + Sitemap: https://vylion.com/sitemap.xml
+1
public/search_index.en.js
···
··· 1 + window.searchIndex = {"fields":["title","body"],"pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5","index":{"body":{"root":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"1":{"docs":{},"df":0,"8":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1},"9":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"2":{"docs":{},"df":0,"0":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"1":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1},"2":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1},"4":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1},"5":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"6":{"docs":{},"df":0,"3":{"docs":{},"df":0,"7":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"8":{"docs":{},"df":0,"8":{"docs":{},"df":0,"4":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"9":{"docs":{},"df":0,"1":{"docs":{},"df":0,"1":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"s":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1},"p":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.0}},"df":2}}},"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"w":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}},"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":2.23606797749979}},"df":2}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{"https://vylion.com/cv/":{"tf":3.0}},"df":1,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":2.23606797749979}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1}},"m":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"y":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}},"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"k":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"https://vylion.com/cv/":{"tf":3.605551275463989}},"df":1}}}},"o":{"docs":{},"df":0,"p":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.0}},"df":2}}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"p":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":2}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"x":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"x":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"j":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1,".":{"docs":{},"df":0,"v":{"docs":{},"df":0,"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}}},"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}},"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.0}},"df":2}}}}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1}}},"p":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"y":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"'":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"v":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":2.449489742783178}},"df":1}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}},"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}},"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"b":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"n":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}},"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"y":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"1":{"docs":{},"df":0,".":{"docs":{},"df":0,"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"v":{"docs":{},"df":0,"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}},"w":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"x":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.23606797749979}},"df":1}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"o":{"docs":{},"df":0,"v":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"y":{"docs":{},"df":0,"b":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"v":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"w":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}},"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"f":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":2.23606797749979}},"df":1}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":2}}}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.449489742783178}},"df":1}},"t":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.449489742783178}},"df":1}}}},"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.449489742783178}},"df":1}}}}}},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":2.6457513110645907}},"df":1}}}}}},"q":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"y":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}}}},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1}}},"p":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1,"r":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"u":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/cv/":{"tf":2.0}},"df":1}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.0}},"df":2}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":2.449489742783178}},"df":1}},"i":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":2.0}},"df":2}}}}},"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/":{"tf":1.0},"https://vylion.com/cv/":{"tf":1.0}},"df":2}},"m":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"q":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}},"x":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":2.8284271247461903}},"df":1}}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}}}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{"https://vylion.com/cv/":{"tf":3.0}},"df":1}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1},"s":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"https://vylion.com/cv/":{"tf":1.7320508075688772}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://vylion.com/cv/":{"tf":1.4142135623730951}},"df":1}}}}}},"s":{"docs":{},"df":0,"l":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"'":{"docs":{},"df":0,"d":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}}}}}},"title":{"root":{"docs":{},"df":0,"c":{"docs":{},"df":0,"v":{"docs":{"https://vylion.com/cv/":{"tf":1.0}},"df":1}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://vylion.com/":{"tf":1.0}},"df":1}}}}}}},"documentStore":{"save":true,"docs":{"https://vylion.com/":{"body":"Hello! I'm Guillermo Serrahima, a Software Engineer from the area of Barcelona, Spain. This is my personal site.\nMaybe you'd like to check out the different sections:\n","id":"https://vylion.com/","title":"Home"},"https://vylion.com/cv/":{"body":"Who am I\nI am Guillermo Serrahima, a Software Engineer from the area of Barcelona, where I currently live. I graduated from the Polytechnic University of Catalonia with a Degree in Informatics Engineering in 2018.\nI am most comfortable when I am working with C++, Java, Python and Rust code. I am familiar with Git, Linux, and the command line. In my day to day I use Arch Linux as my main OS.\nIn addition, I have worked in the past with other languages like Golang, C, C#. I have worked on projects that used PostgreSQL, and I maintain SQLite and MySQL databases on my personal servers (depending on the scope.) I have used testing frameworks like GoogleTest and Pytest, and used CI/CD pipelines like Jenkins and GitHub CI/CD. I also regularly use Docker containers on both a profesional environment and my personal servers.\nLanguages\nI speak Spanish and Catalan natively, and I hold and have used a professional level of English on all my job positions.\nPrevious Experience\nAnsys (now part of Synopsys)\n\nLocation: Madrid (remote)\nPosition: R&amp;D Engineer\nProjects:\n\nDeveloping a software tool on Python, to allow configuration of physics simuations using model-based design by clients with no code knowledge required, by way of a drag-and-drop interface.\nRefactoring a Dash Mantine wrapper library for Python, with the goal of open-sourcing said library.\n\n\nTools: Python, Pytest, Poetry, GitHub CI/CD, GitHub Actions, Docker, WSL, Windows\nPeriod: 2024 Aug. - 2025 Nov.\n\nVerbio (now Verbio by Capacity)\n\nLocation: Barcelona (hybrid)\nPosition: Backend Developer\nProjects:\n\nDeveloping a GRPC API gateway for a SaaS product written in Rust during the initial stages of commercialization and growth of the product.\nDeveloping client tools written in Python for integrating AWS storage with the SaaS product.\nDeveloping Terraform deployment scripts for hosting the different components of the SaaS product on AWS infrastructure.\nExtension of the internal REST API and database backend for a Dashboard of product metrics.\n\n\nTools: Jetbrains CLion (with Rust plugin), Cargo, GitLab CI/CD, Terraform, Python, Docker, Linux\nPeriod: 2022 Jun. - 2024 Jul.\n\nQAD DynaSys\n\nLocation: Barcelona (remote)\nPosition: Software Developer\nProjects:\n\nRefactoring of a C++ desktop app to allow servicing the desktop app as a SaaS product.\nDeveloping a C#-based frontend for interfacing with the C++ desktop app code.\n\n\nTools: Visual Studio, Windows\nPeriod: 2021 Jun. - 2022 Jun.\n\nCapitole Consulting\n\nLocation: Barcelona (remote)\nPosition: Software Developer\nProjects:\n\nDeveloping a Python tool for the processing of analysis results and generation of PDF reports.\nRefactoring of the analysis results data structures for use in the previous tool, and improve maintainability.\nFixing bugs and performance issues in a C++ application.\n\n\nPeriod: 2021 Jan. - Jun.\n\nHP Inc.\n\nLocation: Barcelona\nPosition: Junior SDET (2018), Junior DevOps (2019, remote)\nProjects:\n\nDeveloping C++ unit and integration tests.\nMaintaining several Jenkins instances as a private CI/CD pipeline solution.\n\n\nTools: GoogleTest, VS Code, Jenkins, Jira, Linux\nPeriod: Sep. 2018 - Sep. 2020\n\nMiscellanea\nI host several tiny personal servers (recycled computers at home + a cloud VPS) with services for my own needs. Some of the services I host are:\n\nAn instance of Nextcloud (a cloud drive solution) at cloud.sepo.family\nAn instance of Authentik (an SSO solution) at login.sepo.family\nAn instance of Forgejo (a Git forge) at git.vylion.com\nSeveral private instances of Portainer CE (one for each of my servers)\nA private instance of RustDesk\nA PDS ATProto server for hosting my own profile\nA knot server on knot1.tngl.vylion.com for my own Tangled repos\n\nI currently use a custom built keyboard running my own firmware developed in C++ with QMK.\nIn the past I have developed a text Markov chain bot for Telegram.\nI am also interested in learning JavaScript, TypeScript and React for fullstack development.\nContact\nI can be contacted by email at gserrahima at mailbox.org.\nI am currently living in Esplugues de Llobregat, in Spain, Europe.\nMy phone number is (+ ES Prefix) 637 911 884. I can be contacted through:\n\nCalls\nWhatsApp\nTelegram\n\n\nPlease state your reason for contacting on your first message through WhatsApp or Telegram to avoid being filtered as spam.\n\n","id":"https://vylion.com/cv/","title":"My CV"}},"docInfo":{"https://vylion.com/":{"body":17,"title":1},"https://vylion.com/cv/":{"body":443,"title":1}},"length":2},"lang":"English"}
+15 -14
public/sitemap.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 3 - 4 - <sitemap> 5 - <loc>https://vylion.com/en/sitemap.xml</loc> 6 - 7 - </sitemap> 8 - 9 - <sitemap> 10 - <loc>https://vylion.com/es/sitemap.xml</loc> 11 - 12 - </sitemap> 13 - 14 - </sitemapindex>
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 3 + <url> 4 + <loc>https://vylion.com/</loc> 5 + </url> 6 + <url> 7 + <loc>https://vylion.com/cv/</loc> 8 + </url> 9 + <url> 10 + <loc>https://vylion.com/es/</loc> 11 + </url> 12 + <url> 13 + <loc>https://vylion.com/es/cv/</loc> 14 + </url> 15 + </urlset>
-14
public/style.css
··· 1 - :root { 2 - /* --accent: #23B0FF; /* 1 of 5 basic colors */ 3 - --accent: green; /* 1 of 5 basic colors */ 4 - --background: color-mix(in srgb, var(--accent) 2%, #1D1E28 98%); /* background color; inherit shades of the accent */ 5 - --accent-contrast-color: black; /* mainly uses for text on the accent backgrounds but not limited */ 6 - --color: white; /* text color, also some other text use the variable in color mixing */ 7 - --border-color: rgba(255, 255, 255, .1); /* border color */ 8 - 9 - /* code syntax */ 10 - /* take a look at themes/re-terminal/assets/css/syntax.scss to understand in detail which color stands for */ 11 - --syntax-func-color: color-mix(in srgb, var(--accent) 70%, #999 30%); 12 - --syntax-var-color: color-mix(in srgb, var(--accent) 90%, transparent); 13 - --syntax-value-color: color-mix(in srgb, var(--accent), white); 14 - }
···
-19
public/style.scss
··· 1 - :root { 2 - /* --accent: #23B0FF; /* 1 of 5 basic colors */ 3 - --accent: orange; /* 1 of 5 basic colors */ 4 - --background: color-mix(in srgb, var(--accent) 2%, #1D1E28 98%); /* background color; inherit shades of the accent */ 5 - --accent-contrast-color: black; /* mainly uses for text on the accent backgrounds but not limited */ 6 - --color: white; /* text color, also some other text use the variable in color mixing */ 7 - --border-color: rgba(255, 255, 255, .1); /* border color */ 8 - 9 - /* code syntax */ 10 - /* take a look at themes/re-terminal/assets/css/syntax.scss to understand in detail which color stands for */ 11 - --syntax-func-color: color-mix(in srgb, var(--accent) 70%, #999 30%); 12 - --syntax-var-color: color-mix(in srgb, var(--accent) 90%, transparent); 13 - --syntax-value-color: color-mix(in srgb, var(--accent), white); 14 - 15 - /* breakpoints */ 16 - /* unfortunately, native CSS variables don't support media queries, so use SCSS vars instead */ 17 - $phone: 684px; 18 - $tablet: 900px; 19 - }
···
-4
public/styles.css
··· 1 - html:root{--accent: #23b0ff}:root{--accent-contrast-color: black;--article-link-color: var(inherit);--background: color-mix(in srgb, var(--accent) 2%, #1d1e28 98%);--border-color: rgba(255, 255, 255, 0.1);--color: white;--menu-color: white;--syntax-func-color: color-mix(in srgb, var(--accent) 70%, #999 30%);--syntax-var-color: color-mix(in srgb, var(--accent) 90%, transparent);--syntax-punctuation-color: white;--syntax-value-color: color-mix(in srgb, var(--accent), white);--syntax-comment-color: rgba(255, 255, 255, 0.3);--syntax-line-highlight-mix: color-mix(in srgb, var(--accent) 90%, #999 10%);--syntax-line-highlight-background-color: hsla(24, 20%, 50%, 0.4);--syntax-line-highlight-color: hsl(24, 20%, 95%);--syntax-line-highlight-box-shadow: white;--syntax-code-border-color: rgba(255, 255, 255, 0.1);--syntax-code-copy-button-background: hsla(0, 0%, 87.8%, 0.2);--syntax-code-copy-button-color: #bbb;--syntax-code-copy-button-box-shadow-color: rgba(0, 0, 0, 0.2)}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:400;src:url("../fonts/FiraCode-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:800;src:url("../fonts/FiraCode-Bold.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin:5px 0;text-decoration:none;text-align:center;border-radius:8;border:1px solid var(--accent);background:var(--accent);color:var(--accent-contrast-color);font:inherit;font-weight:bold;appearance:none;cursor:pointer;outline:none}button:hover,.button:hover,a.button:hover{background:color-mix(in srgb, var(--accent), transparent 10%)}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;color:var(--accent);background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none}input,textarea,select{background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:0;padding:10px;margin:5px 0;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:var(--color);outline:1px solid var(--color)}input:active,textarea:active,select:active{box-shadow:none}select{background:var(--background)}select option{background:var(--background)}::placeholder{color:color-mix(in srgb, var(--accent), transparent 50%)}input[type="checkbox"]{vertical-align:middle;padding:10px;box-shadow:inset 0 0 0 3px var(--background)}input[type="checkbox"]:checked{background:var(--accent)}.header{display:flex;flex-direction:column;position:relative}@media print{.header{display:none}}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:'';background:repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:0 0 auto;max-width:100%;text-decoration:none}.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.navigation-menu{margin:0}}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:0 0 auto;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}@media (max-width: 684px){.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}}.navigation-menu .spacer{flex-grow:1 !important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0 !important;color:var(--accent);user-select:none;cursor:pointer}.menu__subdrop--title{padding:5px}.menu__subdrop--list{list-style-type:unset}.menu__dropdown{--shadow-color: color-mix(in srgb, var(--background), transparent 20%);display:none;flex-direction:column;--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 2 - 10px 10px var(--shadow-color);position:absolute;background:var(--background);box-shadow:var(--shadow);color:var(--menu-color);border:2px solid;margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:0 0 auto}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer;display:none}@media (max-width: 684px){.menu--mobile .menu__trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu__dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer}@media (max-width: 684px){.menu--language-selector .menu__trigger{display:none}}.menu--language-selector .menu__dropdown{left:auto;right:0}.logo{display:flex;align-items:center;text-decoration:none;font-weight:bold;background:var(--accent);color:color-mix(in srgb, var(--accent), var(--accent-contrast-color) 90%);padding:5px 10px}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;background-color:var(--background);color:var(--color);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 684px){body{font-size:1rem}}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3,.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{line-height:1.3}.headings--one-size h1:not(first-child),.headings--one-size h2:not(first-child),.headings--one-size h3:not(first-child),.headings--one-size h4:not(first-child),.headings--one-size h5:not(first-child),.headings--one-size h6:not(first-child){margin-top:40px}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3{font-size:1.4rem}.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{font-size:1.2rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:var(--accent);color:var(--accent-contrast-color)}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code,kbd{font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;font-feature-settings:normal;background:color-mix(in srgb, var(--accent), transparent 80%);color:var(--accent);padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:transparent;padding:0;margin:0}pre{background:transparent !important;padding:20px 10px;margin:40px 0;font-size:.95rem !important;overflow:auto;border-top:1px solid rgba(255,255,255,0.1);border-bottom:1px solid rgba(255,255,255,0.1)}pre+pre{border-top:0;margin-top:-40px}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);margin:40px 0;padding:25px}@media (max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type:before{content:'>';display:block;position:absolute;left:-25px;color:var(--accent)}blockquote.twitter-tweet{position:relative;background:color-mix(in srgb, var(--accent), transparent 90%);font:inherit;color:inherit;border:1px solid var(--accent);padding-top:60px}blockquote.twitter-tweet p:before{content:''}blockquote.twitter-tweet:before{content:'> From Twitter:';position:absolute;top:20px;color:var(--accent);font-weight:bold}blockquote.twitter-tweet a{color:var(--accent)}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed var(--accent);padding:10px}th{color:var(--accent)}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media (max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol>li{counter-increment:li}ol>li:before{content:counter(li);position:absolute;right:calc(100% + 10px);color:var(--accent);display:inline-block;text-align:right}ol>li>ol{margin-left:38px}ol>li>ol>li{counter-increment:li}ol>li>ol>li:before{content:counters(li, ".") " "}mark{background:var(--accent);color:var(--accent-contrast-color)}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid rgba(255,255,255,0.1)}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media (max-width: 684px){.container{padding:20px}}@media print{.container{display:initial}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}hr{width:100%;border:none;background:var(--border-color);height:1px}.hidden{display:none}sup{line-height:0}.index-content{margin-top:20px}.framed{border:1px solid var(--accent);padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}.post:not(:last-of-type){border-bottom:1px solid var(--border-color)}.post-meta{font-size:1rem;margin-bottom:10px;color:color-mix(in srgb, var(--accent), transparent 30%)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{--border: 3px dotted var(--accent);position:relative;color:var(--accent);margin:0 0 15px;padding-bottom:15px;border-bottom:var(--border)}.post-title:after{content:'';position:absolute;bottom:2px;display:block;width:100%;border-bottom:var(--border)}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-content a{color:var(--article-link-color)}.post-cover{border:20px solid var(--accent);background:transparent;margin:40px 0;padding:20px}@media (max-width: 684px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:var(--accent)}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{color:color-mix(in srgb, var(--accent), transparent 10%);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover a,h2:hover a,h3:hover a,h4:hover a{visibility:visible}.footnotes{color:color-mix(in srgb, var(--accent), transparent 50%)}figure:has(.post-cover){margin:40px 0}figure:has(.post-cover)>.post-cover{margin:0}figure:has(.post-cover)>figcaption{margin-top:0}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background);color:color-mix(in srgb, var(--accent), transparent 70%);font-size:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;padding:0;appearance:none}@media (max-width: 684px){.button{flex:1}}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 0;flex-grow:0;opacity:.5;display:flex;justify-content:center}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;font-size:1rem;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}#banner{width:100%;height:2rem;display:grid;grid-template-columns:1fr auto;background:var(--accent)}#banner span{display:flex;align-items:center;justify-content:center}#banner a{color:var(--accent-contrast-color);display:inline}#banner>button{padding:0 5px 0 0;margin:0}code[class*="language-"],pre[class*="language-"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#2d2d2d}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user="root"]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus{color:inherit;text-decoration:none}code.language-css,code.language-scss,.token.boolean,.token.string,.token.entity,.token.url,.language-css .token.string,.language-scss .token.string,.style .token.string,.token.attr-value,.token.keyword,.token.control,.token.directive,.token.statement,.token.regex,.token.atrule,.token.number,.token.inserted,.token.important{color:var(--syntax-value-color, color-mix(in srgb, var(--accent), white)) !important}.token.tag-id,.token.atrule-id,.token.operator,.token.unit,.token.placeholder,.token.variable,.token.tag,.token.attr-name,.token.namespace,.token.deleted,.token.property,.token.class-name,.token.constant,.token.symbol{color:var(--syntax-var-color, color-mix(in srgb, var(--accent) 90%, transparent)) !important}.token.property,.token.function,.token.function-name,.token.deleted,code[class*="language-"],.command-line-prompt>span:before{color:var(--syntax-func-color, color-mix(in srgb, var(--accent) 70%, #999 30%)) !important}.token.selector,.token.tag,.token.punctuation{color:var(--syntax-punctuation-color)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--syntax-comment-color) !important}.token.namespace{opacity:0.7 !important}pre[data-line]{position:relative}pre[class*="language-"]{margin:0;padding:0;overflow:auto}.line-highlight{position:absolute;left:0;right:0;padding:0;margin:0;background:color-mix(in srgb, var(--syntax-line-highlight-mix), transparent 92%);pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;left:0.6em;min-width:1em;padding:0 0.5em;background-color:var(--syntax-line-highlight-background-color);color:var(--syntax-line-highlight-color);font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:0.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px var(--syntax-line-highlight-box-shadow)}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:0.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}.code-toolbar{--code-margin: 40px;position:relative;margin:var(--code-margin) 0;padding:20px;border:1px solid var(--syntax-code-border-color)}.code-toolbar+.code-toolbar,.code-toolbar+.highlight,.code-toolbar+.highlight .code-toolbar{border-top:0;margin-top:calc(-1 * var(--code-margin))}.code-toolbar pre,.code-toolbar code{border:none}.code-toolbar code{display:block;color:inherit}.code-toolbar>.toolbar button{font-size:0.8em !important;background:var(--syntax-code-copy-button-background) !important;color:var(--syntax-code-copy-button-color) !important;box-shadow:0 2px 0 0 var(--syntax-code-copy-button-box-shadow-color) !important;border-radius:0 !important;margin:6px !important;padding:10px !important;user-select:none}.collapsable-code{--border-color: color-mix(in srgb, var(--accent) 90%, #999 10%);position:relative;width:100%;margin:40px 0}.collapsable-code input[type="checkbox"]{position:absolute;visibility:hidden}.collapsable-code input[type="checkbox"]:checked~pre,.collapsable-code input[type="checkbox"]:checked~.code-toolbar pre{height:0;padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar{padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar .toolbar{display:none}.collapsable-code input[type="checkbox"]:checked~label .collapsable-code__toggle:after{content:attr(data-label-expand)}.collapsable-code label{position:relative;display:flex;justify-content:space-between;min-width:30px;min-height:30px;margin:0;border-bottom:1px solid var(--border-color);cursor:pointer}.collapsable-code__title{flex:1;color:var(--accent);padding:3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:var(--accent);border:1px solid var(--border-color);border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code__toggle{color:var(--accent);font-size:16px;padding:3px 10px}.collapsable-code__toggle:after{content:attr(data-label-collapse)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}.collapsable-code .code-toolbar{margin:0}.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:var(--accent)}.terms ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:var(--accent)}body .gist .blob-num,body .gist .blob-code-inner{border:none} 3 - 4 - /*# sourceMappingURL=styles.css.map */
···
-47
public/styles.css.map
··· 1 - { 2 - "version": 3, 3 - "file": "styles.css", 4 - "sourceRoot": "/home/vylion/Workspace/vylion/my-hugo-site/my-site", 5 - "sources": [ 6 - "css/base.scss", 7 - "themes/re-terminal/assets/css/variables.scss", 8 - "themes/re-terminal/assets/css/font.scss", 9 - "themes/re-terminal/assets/css/buttons.scss", 10 - "themes/re-terminal/assets/css/form.scss", 11 - "themes/re-terminal/assets/css/header.scss", 12 - "themes/re-terminal/assets/css/menu.scss", 13 - "themes/re-terminal/assets/css/logo.scss", 14 - "themes/re-terminal/assets/css/main.scss", 15 - "themes/re-terminal/assets/css/post.scss", 16 - "themes/re-terminal/assets/css/pagination.scss", 17 - "themes/re-terminal/assets/css/footer.scss", 18 - "themes/re-terminal/assets/css/banner.scss", 19 - "themes/re-terminal/assets/css/prism.scss", 20 - "themes/re-terminal/assets/css/syntax.scss", 21 - "themes/re-terminal/assets/css/code.scss", 22 - "themes/re-terminal/assets/css/terms.scss", 23 - "themes/re-terminal/assets/css/gist.scss" 24 - ], 25 - "sourcesContent": [ 26 - "html:root {\n --accent: #23b0ff;\n}$centerTheme: center;\n\n\n@import \"variables\";\n\n\n@import \"font\";\n@import \"buttons\";\n@import \"form\";\n\n@import \"header\";\n@import \"menu\";\n@import \"logo\";\n@import \"main\";\n@import \"post\";\n@import \"pagination\";\n@import \"footer\";\n@import \"banner\";\n\n@import \"prism\";\n@import \"syntax\";\n@import \"code\";\n@import \"terms\";\n@import \"gist\";\n", 27 - ":root {\n --accent-contrast-color: black;\n --article-link-color: var(inherit);\n --background: color-mix(in srgb, var(--accent) 2%, #1d1e28 98%);\n --border-color: rgba(255, 255, 255, 0.1);\n --color: white;\n --menu-color: white;\n\n // Use in code syntax highlighting\n --syntax-func-color: color-mix(in srgb, var(--accent) 70%, #999 30%);\n --syntax-var-color: color-mix(in srgb, var(--accent) 90%, transparent);\n --syntax-punctuation-color: white;\n --syntax-value-color: color-mix(in srgb, var(--accent), white);\n --syntax-comment-color: rgba(255, 255, 255, 0.3);\n --syntax-line-highlight-mix: color-mix(in srgb, var(--accent) 90%, #999 10%);\n --syntax-line-highlight-background-color: hsla(24, 20%, 50%, 0.4);\n --syntax-line-highlight-color: hsl(24, 20%, 95%);\n --syntax-line-highlight-box-shadow: white;\n --syntax-code-border-color: rgba(255, 255, 255, 0.1);\n --syntax-code-copy-button-background: hsla(0, 0%, 87.8%, 0.2);\n --syntax-code-copy-button-color: #bbb;\n --syntax-code-copy-button-box-shadow-color: rgba(0, 0, 0, 0.2);\n}\n\n// Native CSS Variable aren't supported in a combination with MEDIA QUERIES. Wait for a new standard https://drafts.csswg.org/css-env-1/\n// --phone: \"max-width: 684px\";\n// --tablet: \"max-width: 900px\";\n$phone: 684px;\n$tablet: 900px;", 28 - "@font-face {\n font-display: swap;\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/FiraCode-Regular.woff\") format(\"woff\");\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 800;\n src: url(\"../fonts/FiraCode-Bold.woff\") format(\"woff\");\n}\n", 29 - ".button-container {\n display: table;\n margin-left: auto;\n margin-right: auto;\n}\n\nbutton,\n.button,\na.button {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 18px;\n margin: 5px 0;\n text-decoration: none;\n text-align: center;\n border-radius: 8;\n border: 1px solid var(--accent);\n background: var(--accent);\n color: var(--accent-contrast-color);\n font: inherit;\n font-weight: bold;\n appearance: none;\n cursor: pointer;\n outline: none;\n\n &:hover {\n background: color-mix(in srgb, var(--accent), transparent 10%);\n }\n\n /* variants */\n\n &.outline {\n background: transparent;\n box-shadow: none;\n padding: 8px 18px;\n\n :hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n &.link {\n background: none;\n font-size: 1rem;\n }\n\n /* sizes */\n\n &.small {\n font-size: .8rem;\n }\n\n &.wide {\n min-width: 200px;\n padding: 14px 24px;\n }\n}\n\na.read-more,\na.read-more:hover,\na.read-more:active {\n display: inline-flex;\n border: none;\n color: var(--accent);\n background: none;\n box-shadow: none;\n padding: 0;\n margin: 20px 0;\n max-width: 100%;\n}\n\n.code-toolbar {\n margin-bottom: 20px;\n\n .toolbar-item a {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 8px;\n margin-bottom: 5px;\n text-decoration: none;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n border-radius: 8px;\n border: 1px solid transparent;\n appearance: none;\n cursor: pointer;\n outline: none;\n }\n}\n", 30 - "input, textarea, select {\n background: transparent;\n color: var(--accent);\n border: 1px solid var(--accent);\n border-radius: 0;\n padding: 10px;\n margin: 5px 0;\n font: inherit;\n appearance: none;\n\n &:focus, :active {\n border-color: var(--color);\n outline: 1px solid var(--color);\n }\n\n &:active {\n box-shadow: none;\n }\n}\n\nselect {\n background: var(--background);\n\n option {\n background: var(--background);\n }\n}\n\n::placeholder {\n color: color-mix(in srgb, var(--accent), transparent 50%);\n}\n\ninput {\n &[type=\"checkbox\"] {\n vertical-align: middle;\n padding: 10px;\n box-shadow: inset 0 0 0 3px var(--background);\n\n &:checked {\n background: var(--accent);\n }\n }\n}\n", 31 - ".header {\n display: flex;\n flex-direction: column;\n position: relative;\n\n @media print {\n display: none;\n }\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n &__logo {\n display: flex;\n flex: 1;\n\n &:after {\n content: '';\n background: repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 10px);\n display: block;\n width: 100%;\n right: 10px;\n }\n\n a {\n flex: 0 0 auto;\n max-width: 100%;\n text-decoration: none;\n }\n }\n}\n", 32 - "@mixin menu {\n --shadow-color: color-mix(in srgb, var(--background), transparent 20%);\n display: none;\n flex-direction: column;\n --shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color),\n 10px 10px var(--shadow-color);\n position: absolute;\n background: var(--background);\n box-shadow: var(--shadow);\n color: var(--menu-color);\n border: 2px solid;\n margin: 0;\n padding: 10px;\n top: 10px;\n left: 0;\n list-style: none;\n z-index: 99;\n}\n\n@mixin header-menu-trigger {\n color: var(--accent);\n border: 2px solid;\n margin-left: 10px;\n height: 100%;\n padding: 3px 8px;\n margin-bottom: 0 !important;\n position: relative;\n cursor: pointer;\n}\n\n.navigation-menu {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin: 20px 1px;\n\n @media (max-width: $phone) {\n margin: 0;\n }\n\n &__inner {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n >li {\n flex: 0 0 auto;\n margin-bottom: 10px;\n white-space: nowrap;\n\n &:not(:last-of-type) {\n margin-right: 20px;\n }\n }\n\n @media (max-width: $phone) {\n flex-direction: column;\n align-items: flex-start;\n padding: 0;\n\n li {\n margin: 0;\n padding: 5px;\n }\n }\n }\n\n .spacer {\n flex-grow: 1 !important;\n }\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n position: relative;\n list-style: none;\n padding: 0;\n margin: 0;\n\n &__trigger {\n margin-right: 0 !important;\n color: var(--accent);\n user-select: none;\n cursor: pointer;\n }\n\n &__subdrop {\n &--title {\n padding: 5px;\n }\n\n &--list {\n list-style-type: unset;\n }\n }\n\n &__dropdown {\n @include menu;\n\n .open & {\n display: flex;\n }\n\n >li {\n flex: 0 0 auto;\n\n &:not(:last-of-type) {\n margin-bottom: 10px;\n }\n\n a {\n display: flex;\n padding: 5px;\n }\n }\n }\n\n &--desktop {\n @media (max-width: $phone) {\n display: none;\n }\n }\n\n &--mobile {\n .menu__trigger {\n @include header-menu-trigger;\n display: none;\n\n @media (max-width: $phone) {\n display: block;\n }\n }\n\n .menu__dropdown {\n @media (max-width: $phone) {\n left: auto;\n right: 0;\n }\n }\n\n li {\n flex: 0 0 auto;\n\n &:not(:last-of-type) {\n margin-bottom: 10px;\n }\n }\n }\n\n &--language-selector {\n .menu__trigger {\n @include header-menu-trigger;\n\n @media (max-width: $phone) {\n display: none;\n }\n }\n\n .menu__dropdown {\n left: auto;\n right: 0;\n }\n }\n}", 33 - ".logo {\n display: flex;\n align-items: center;\n text-decoration: none;\n font-weight: bold;\n background: var(--accent);\n color: color-mix(in srgb, var(--accent), var(--accent-contrast-color) 90%);\n padding: 5px 10px;\n}\n", 34 - "html {\n box-sizing: border-box;\n}\n\n*,\n*:before,\n*:after {\n box-sizing: inherit;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;\n font-size: 1rem;\n line-height: 1.54;\n letter-spacing: -0.02em;\n background-color: var(--background);\n color: var(--color);\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n font-feature-settings: \"liga\", \"tnum\", \"zero\", \"ss01\", \"locl\";\n font-variant-ligatures: contextual;\n -webkit-overflow-scrolling: touch;\n -webkit-text-size-adjust: 100%;\n\n @media (max-width: $phone) {\n font-size: 1rem;\n }\n}\n\n.headings--one-size {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n line-height: 1.3;\n\n &:not(first-child) {\n margin-top: 40px;\n }\n }\n\n h1,\n h2,\n h3 {\n font-size: 1.4rem;\n }\n\n h4,\n h5,\n h6 {\n font-size: 1.2rem;\n }\n}\n\na {\n color: inherit;\n\n /* Waiting for a better times... */\n /* &:has(code) {\n text-decoration-color: var(--accent);\n } */\n}\n\nimg {\n display: block;\n max-width: 100%;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n}\n\np {\n margin-bottom: 20px;\n}\n\nfigure {\n display: table;\n max-width: 100%;\n margin: 25px 0;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n\n figcaption {\n font-size: 14px;\n padding: 5px 10px;\n margin-top: 5px;\n background: var(--accent);\n color: var(--accent-contrast-color);\n /* opacity: .8; */\n\n &.left {\n text-align: left;\n }\n\n &.center {\n text-align: center;\n }\n\n &.right {\n text-align: right;\n }\n }\n}\n\ncode, kbd {\n font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;\n font-feature-settings: normal;\n background: color-mix(in srgb, var(--accent), transparent 80%);\n color: var(--accent);\n padding: 1px 6px;\n margin: 0 2px;\n font-size: .95rem;\n\n code, kbd {\n background: transparent;\n padding: 0;\n margin: 0;\n }\n}\n\npre {\n background: transparent !important;\n padding: 20px 10px;\n margin: 40px 0;\n font-size: .95rem !important;\n overflow: auto;\n border-top: 1px solid rgba(255, 255, 255, .1);\n border-bottom: 1px solid rgba(255, 255, 255, .1);\n\n + pre {\n border-top: 0;\n margin-top: -40px;\n }\n\n @media (max-width: $phone) {\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n code {\n background: none !important;\n margin: 0;\n padding: 0;\n font-size: inherit;\n border: none;\n }\n}\n\nblockquote {\n border-top: 1px solid var(--accent);\n border-bottom: 1px solid var(--accent);\n margin: 40px 0;\n padding: 25px;\n\n @media (max-width: $phone) {\n padding-right: 0;\n }\n\n p:first-of-type {\n margin-top: 0;\n }\n\n p:last-of-type {\n margin-bottom: 0;\n }\n\n p {\n position: relative;\n }\n\n p:first-of-type:before {\n content: '>';\n display: block;\n position: absolute;\n left: -25px;\n color: var(--accent);\n }\n\n &.twitter-tweet {\n position: relative;\n background: color-mix(in srgb, var(--accent), transparent 90%);\n font: inherit;\n color: inherit;\n border: 1px solid var(--accent);\n padding-top: 60px;\n\n p:before {\n content: '';\n }\n\n &:before {\n content: '> From Twitter:';\n position: absolute;\n top: 20px;\n color: var(--accent);\n font-weight: bold;\n }\n\n a {\n color: var(--accent);\n }\n }\n}\n\ntable {\n table-layout: auto;\n border-collapse: collapse;\n width: 100%;\n margin: 40px 0;\n}\n\ntable,\nth,\ntd {\n border: 1px dashed var(--accent);\n padding: 10px;\n}\n\nth {\n color: var(--accent);\n}\n\nul,\nol {\n margin-left: 22px;\n padding: 0;\n\n li {\n position: relative;\n }\n\n @media (max-width: $phone) {\n margin-left: 20px;\n }\n}\n\nol {\n list-style: none;\n counter-reset: li;\n\n > li {\n counter-increment: li;\n\n &:before {\n content: counter(li);\n position: absolute;\n right: calc(100% + 10px);\n color: var(--accent);\n display: inline-block;\n text-align: right;\n }\n\n > ol {\n margin-left: 38px;\n\n > li {\n counter-increment: li;\n\n &:before {\n content: counters(li, \".\") \" \";\n }\n }\n }\n }\n}\n\nmark {\n background: var(--accent);\n color: var(--accent-contrast-color);\n}\n\n.container {\n display: flex;\n flex-direction: column;\n padding: 40px;\n max-width: 864px;\n min-height: 100vh;\n border-right: 1px solid rgba(255, 255, 255, 0.1);\n\n &.full,\n &.center {\n border: none;\n margin: 0 auto;\n }\n\n &.full {\n max-width: 100%;\n }\n\n @media (max-width: $phone) {\n padding: 20px;\n }\n\n @media print {\n display: initial;\n }\n}\n\n.content {\n display: flex;\n flex-direction: column;\n\n @media print {\n display: initial;\n }\n}\n\nhr {\n width: 100%;\n border: none;\n background: var(--border-color);\n height: 1px;\n}\n\n.hidden {\n display: none;\n}\n\nsup {\n line-height: 0;\n}\n", 35 - ".index-content {\n margin-top: 20px;\n}\n\n.framed {\n border: 1px solid var(--accent);\n padding: 20px;\n\n *:first-child {\n margin-top: 0;\n }\n\n *:last-child {\n margin-bottom: 0;\n }\n}\n\n.posts {\n width: 100%;\n}\n\n.post {\n width: 100%;\n text-align: left;\n margin: 20px auto;\n padding: 20px 0;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid var(--border-color);\n }\n\n &-meta {\n font-size: 1rem;\n margin-bottom: 10px;\n color: color-mix(in srgb, var(--accent), transparent 30%);\n\n & > *:not(:first-child) {\n &::before {\n content: \"::\";\n display: inline-block;\n margin: 0 8px;\n }\n }\n }\n\n &-title {\n --border: 3px dotted var(--accent);\n position: relative;\n color: var(--accent);\n margin: 0 0 15px;\n padding-bottom: 15px;\n border-bottom: var(--border);\n\n &:after {\n content: '';\n position: absolute;\n bottom: 2px;\n display: block;\n width: 100%;\n border-bottom: var(--border);\n }\n\n a {\n text-decoration: none;\n }\n }\n\n &-tags {\n display: block;\n margin-bottom: 20px;\n font-size: 1rem;\n opacity: .5;\n\n a {\n text-decoration: none;\n }\n }\n\n &-content {\n margin-top: 30px;\n \n & a {\n color: var(--article-link-color);\n }\n }\n\n &-cover {\n border: 20px solid var(--accent);\n background: transparent;\n margin: 40px 0;\n padding: 20px;\n\n @media (max-width: $phone) {\n padding: 10px;\n border-width: 10px;\n }\n }\n\n ul {\n list-style: none;\n\n li:not(:empty):before {\n content: '-';\n position: absolute;\n left: -20px;\n color: var(--accent);\n }\n }\n}\n\n.post--regulation {\n h1 {\n justify-content: center;\n }\n\n h2 {\n justify-content: center;\n margin-bottom: 10px;\n\n & + h2 {\n margin-top: -10px;\n margin-bottom: 20px;\n }\n }\n}\n\n.hanchor {\n color: color-mix(in srgb, var(--accent), transparent 10%);\n text-decoration: none;\n margin-left: 10px;\n visibility: hidden;\n}\n\nh1:hover a, h2:hover a, h3:hover a, h4:hover a {\n visibility: visible;\n}\n\n.footnotes {\n color: color-mix(in srgb, var(--accent), transparent 50%);\n}\n\nfigure:has(.post-cover) {\n margin: 40px 0;\n\n\n & > .post-cover {\n margin: 0;\n }\n\n & > figcaption {\n margin-top: 0;\n }\n}\n", 36 - ".pagination {\n margin-top: 50px;\n\n @media print {\n display: none;\n }\n\n &__title {\n display: flex;\n text-align: center;\n position: relative;\n margin: 100px 0 20px;\n\n &-h {\n text-align: center;\n margin: 0 auto;\n padding: 5px 10px;\n background: var(--background);\n color: color-mix(in srgb, var(--accent), transparent 70%);\n font-size: .8rem;\n text-transform: uppercase;\n text-decoration: none;\n letter-spacing: .1em;\n z-index: 1;\n }\n\n hr {\n position: absolute;\n left: 0;\n right: 0;\n width: 100%;\n margin-top: 15px;\n z-index: 0;\n }\n }\n\n &__buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-flow: row wrap;\n gap: 10px;\n\n a {\n text-decoration: none;\n }\n }\n}\n\n.button {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 1rem;\n padding: 0;\n appearance: none;\n\n @media(max-width: $phone) {\n flex: 1;\n }\n\n a {\n display: flex;\n justify-content: center;\n flex: 1;\n padding: 8px 16px;\n text-decoration: none;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__text {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &.next .button__icon {\n margin-left: 8px;\n }\n\n &.previous .button__icon {\n margin-right: 8px;\n }\n}\n", 37 - ".footer {\n padding: 40px 0;\n flex-grow: 0;\n opacity: .5;\n display: flex;\n justify-content: $centerTheme;\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0;\n width: 760px;\n max-width: 100%;\n\n @media (max-width: $tablet) {\n flex-direction: column;\n }\n }\n\n a {\n color: inherit;\n }\n\n .copyright {\n display: flex;\n flex-flow: row wrap;\n flex: 1;\n align-items: $centerTheme;\n font-size: 1rem;\n justify-content: $centerTheme;\n\n &--user {\n margin: auto;\n text-align: center;\n }\n\n & > *:first-child:not(:only-child) {\n margin-right: 10px;\n }\n\n span {\n white-space: nowrap;\n }\n }\n}\n", 38 - "#banner {\n width: 100%;\n height: 2rem;\n display: grid;\n grid-template-columns: 1fr auto;\n background: var(--accent);\n\n & span {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n & a {\n color: var(--accent-contrast-color);\n display: inline;\n }\n\n & > button {\n padding: 0 5px 0 0;\n margin: 0;\n }\n} ", 39 - "/* PrismJS 1.24.1\nhttps://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */\n/**\n * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML\n * Based on https://github.com/chriskempson/tomorrow-theme\n * @author Rose Pritchard\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: #ccc;\n\tbackground: none;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #2d2d2d;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.block-comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: #999;\n}\n\n.token.punctuation {\n\tcolor: #ccc;\n}\n\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted {\n\tcolor: #e2777a;\n}\n\n.token.function-name {\n\tcolor: #6196cc;\n}\n\n.token.boolean,\n.token.number,\n.token.function {\n\tcolor: #f08d49;\n}\n\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n\tcolor: #f8c555;\n}\n\n.token.selector,\n.token.important,\n.token.atrule,\n.token.keyword,\n.token.builtin {\n\tcolor: #cc99cd;\n}\n\n.token.string,\n.token.char,\n.token.attr-value,\n.token.regex,\n.token.variable {\n\tcolor: #7ec699;\n}\n\n.token.operator,\n.token.entity,\n.token.url {\n\tcolor: #67cdcc;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n\n.token.inserted {\n\tcolor: green;\n}\n\npre[data-line] {\n\tposition: relative;\n\tpadding: 1em 0 1em 3em;\n}\n\n.line-highlight {\n\tposition: absolute;\n\tleft: 0;\n\tright: 0;\n\tpadding: inherit 0;\n\tmargin-top: 1em; /* Same as .prismโ€™s padding-top */\n\n\tbackground: hsla(24, 20%, 50%,.08);\n\tbackground: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));\n\n\tpointer-events: none;\n\n\tline-height: inherit;\n\twhite-space: pre;\n}\n\n@media print {\n\t.line-highlight {\n\t\t/*\n\t\t * This will prevent browsers from replacing the background color with white.\n\t\t * It's necessary because the element is layered on top of the displayed code.\n\t\t */\n\t\t-webkit-print-color-adjust: exact;\n\t\tcolor-adjust: exact;\n\t}\n}\n\n\t.line-highlight:before,\n\t.line-highlight[data-end]:after {\n\t\tcontent: attr(data-start);\n\t\tposition: absolute;\n\t\ttop: .4em;\n\t\tleft: .6em;\n\t\tmin-width: 1em;\n\t\tpadding: 0 .5em;\n\t\tbackground-color: hsla(24, 20%, 50%,.4);\n\t\tcolor: hsl(24, 20%, 95%);\n\t\tfont: bold 65%/1.5 sans-serif;\n\t\ttext-align: center;\n\t\tvertical-align: .3em;\n\t\tborder-radius: 999px;\n\t\ttext-shadow: none;\n\t\tbox-shadow: 0 1px white;\n\t}\n\n\t.line-highlight[data-end]:after {\n\t\tcontent: attr(data-end);\n\t\ttop: auto;\n\t\tbottom: .4em;\n\t}\n\n.line-numbers .line-highlight:before,\n.line-numbers .line-highlight:after {\n\tcontent: none;\n}\n\npre[id].linkable-line-numbers span.line-numbers-rows {\n\tpointer-events: all;\n}\npre[id].linkable-line-numbers span.line-numbers-rows > span:before {\n\tcursor: pointer;\n}\npre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {\n\tbackground-color: rgba(128, 128, 128, .2);\n}\n\npre[class*=\"language-\"].line-numbers {\n\tposition: relative;\n\tpadding-left: 3.8em;\n\tcounter-reset: linenumber;\n}\n\npre[class*=\"language-\"].line-numbers > code {\n\tposition: relative;\n\twhite-space: inherit;\n}\n\n.line-numbers .line-numbers-rows {\n\tposition: absolute;\n\tpointer-events: none;\n\ttop: 0;\n\tfont-size: 100%;\n\tleft: -3.8em;\n\twidth: 3em; /* works for line-numbers below 1000 lines */\n\tletter-spacing: -1px;\n\tborder-right: 1px solid #999;\n\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n}\n\n\t.line-numbers-rows > span {\n\t\tdisplay: block;\n\t\tcounter-increment: linenumber;\n\t}\n\n\t\t.line-numbers-rows > span:before {\n\t\t\tcontent: counter(linenumber);\n\t\t\tcolor: #999;\n\t\t\tdisplay: block;\n\t\t\tpadding-right: 0.8em;\n\t\t\ttext-align: right;\n\t\t}\n\n.command-line-prompt {\n\tborder-right: 1px solid #999;\n\tdisplay: block;\n\tfloat: left;\n\tfont-size: 100%;\n\tletter-spacing: -1px;\n\tmargin-right: 1em;\n\tpointer-events: none;\n\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.command-line-prompt > span:before {\n\tcolor: #999;\n\tcontent: ' ';\n\tdisplay: block;\n\tpadding-right: 0.8em;\n}\n\n.command-line-prompt > span[data-user]:before {\n\tcontent: \"[\" attr(data-user) \"@\" attr(data-host) \"] $\";\n}\n\n.command-line-prompt > span[data-user=\"root\"]:before {\n\tcontent: \"[\" attr(data-user) \"@\" attr(data-host) \"] #\";\n}\n\n.command-line-prompt > span[data-prompt]:before {\n\tcontent: attr(data-prompt);\n}\n\ndiv.code-toolbar {\n\tposition: relative;\n}\n\ndiv.code-toolbar > .toolbar {\n\tposition: absolute;\n\ttop: .3em;\n\tright: .2em;\n\ttransition: opacity 0.3s ease-in-out;\n\topacity: 0;\n}\n\ndiv.code-toolbar:hover > .toolbar {\n\topacity: 1;\n}\n\n/* Separate line b/c rules are thrown out if selector is invalid.\n IE11 and old Edge versions don't support :focus-within. */\ndiv.code-toolbar:focus-within > .toolbar {\n\topacity: 1;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item {\n\tdisplay: inline-block;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a {\n\tcursor: pointer;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > button {\n\tbackground: none;\n\tborder: 0;\n\tcolor: inherit;\n\tfont: inherit;\n\tline-height: normal;\n\toverflow: visible;\n\tpadding: 0;\n\t-webkit-user-select: none; /* for button */\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar > .toolbar-item > span {\n\tcolor: #bbb;\n\tfont-size: .8em;\n\tpadding: 0 .5em;\n\tbackground: #f5f2f0;\n\tbackground: rgba(224, 224, 224, 0.2);\n\tbox-shadow: 0 2px 0 0 rgba(0,0,0,0.2);\n\tborder-radius: .5em;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > a:focus,\ndiv.code-toolbar > .toolbar > .toolbar-item > button:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > button:focus,\ndiv.code-toolbar > .toolbar > .toolbar-item > span:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > span:focus {\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n", 40 - "code.language-css,\ncode.language-scss,\n.token.boolean,\n.token.string,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.language-scss .token.string,\n.style .token.string,\n.token.attr-value,\n.token.keyword,\n.token.control,\n.token.directive,\n.token.statement,\n.token.regex,\n.token.atrule,\n.token.number,\n.token.inserted,\n.token.important {\n color: var(--syntax-value-color, color-mix(in srgb, var(--accent), white)) !important;\n}\n\n.token.tag-id,\n.token.atrule-id,\n.token.operator,\n.token.unit,\n.token.placeholder,\n.token.variable,\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted,\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n color: var(--syntax-var-color, color-mix(in srgb, var(--accent) 90%, transparent)) !important;\n}\n\n.token.property,\n.token.function,\n.token.function-name,\n.token.deleted,\ncode[class*=\"language-\"],\n.command-line-prompt>span:before {\n color: var(--syntax-func-color, color-mix(in srgb, var(--accent) 70%, #999 30%)) !important;\n}\n\n.token.selector,\n.token.tag,\n.token.punctuation {\n color: var(--syntax-punctuation-color);\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: var(--syntax-comment-color) !important;\n}\n\n.token.namespace {\n opacity: 0.7 !important;\n}\n\npre[data-line] {\n position: relative;\n}\n\npre[class*=\"language-\"] {\n margin: 0;\n padding: 0;\n overflow: auto;\n}\n\n.line-highlight {\n position: absolute;\n left: 0;\n right: 0;\n padding: 0;\n margin: 0;\n background: color-mix(in srgb, var(--syntax-line-highlight-mix), transparent 92%);\n pointer-events: none;\n line-height: inherit;\n white-space: pre;\n}\n\n.line-highlight:before,\n.line-highlight[data-end]:after {\n content: attr(data-start);\n position: absolute;\n left: 0.6em;\n min-width: 1em;\n padding: 0 0.5em;\n background-color: var(--syntax-line-highlight-background-color);\n color: var(--syntax-line-highlight-color);\n font: bold 65%/1.5 sans-serif;\n text-align: center;\n vertical-align: 0.3em;\n border-radius: 999px;\n text-shadow: none;\n box-shadow: 0 1px var(--syntax-line-highlight-box-shadow);\n}\n\n.line-highlight[data-end]:after {\n content: attr(data-end);\n top: auto;\n bottom: 0.4em;\n}\n\n.line-numbers .line-highlight:before,\n.line-numbers .line-highlight:after {\n content: none;\n}\n\n.code-toolbar {\n --code-margin: 40px;\n position: relative;\n margin: var(--code-margin) 0;\n padding: 20px;\n border: 1px solid var(--syntax-code-border-color);\n\n +.code-toolbar,\n +.highlight,\n +.highlight .code-toolbar {\n border-top: 0;\n margin-top: calc(-1 * var(--code-margin));\n }\n\n pre,\n code {\n border: none;\n }\n\n code {\n display: block;\n color: inherit;\n }\n\n >.toolbar {\n button {\n font-size: 0.8em !important;\n background: var(--syntax-code-copy-button-background) !important;\n color: var(--syntax-code-copy-button-color) !important;\n box-shadow: 0 2px 0 0 var(--syntax-code-copy-button-box-shadow-color) !important;\n border-radius: 0 !important;\n margin: 6px !important;\n padding: 10px !important;\n user-select: none;\n }\n }\n}", 41 - ".collapsable-code {\n --border-color: color-mix(in srgb, var(--accent) 90%, #999 10%);\n\n position: relative;\n width: 100%;\n margin: 40px 0;\n\n input[type=\"checkbox\"] {\n position: absolute;\n visibility: hidden;\n }\n\n input[type=\"checkbox\"]:checked {\n ~ pre,\n ~ .code-toolbar pre {\n height: 0;\n padding: 0;\n border-top: none;\n }\n\n ~ .code-toolbar {\n padding: 0;\n border-top: none;\n\n .toolbar {\n display: none;\n }\n }\n\n ~ label .collapsable-code__toggle:after {\n content: attr(data-label-expand);\n }\n }\n\n label {\n position: relative;\n display: flex;\n justify-content: space-between;\n min-width: 30px;\n min-height: 30px;\n margin: 0;\n border-bottom: 1px solid var(--border-color);\n cursor: pointer;\n }\n\n &__title {\n flex: 1;\n color: var(--accent);\n padding: 3px 10px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__language {\n color: var(--accent);\n border: 1px solid var(--border-color);\n border-bottom: none;\n text-transform: uppercase;\n padding: 3px 10px;\n }\n\n &__toggle {\n color: var(--accent);\n font-size: 16px;\n padding: 3px 10px;\n\n &:after {\n content: attr(data-label-collapse);\n }\n }\n\n pre {\n margin-top: 0;\n\n &::first-line {\n line-height: 0;\n }\n }\n\n .code-toolbar {\n margin: 0;\n }\n}\n", 42 - ".terms {\n h3 {\n font-size: initial;\n }\n\n ul {\n list-style: none;\n\n li {\n a {\n color: var(--accent);\n }\n }\n\n li:not(:empty):before {\n content: '-';\n position: absolute;\n left: -20px;\n color: var(--accent);\n }\n }\n}", 43 - "body .gist .blob-num /* line numbers */,\nbody .gist .blob-code-inner\n{\n border: none;\n}\n\n" 44 - ], 45 - "names": [], 46 - "mappings": "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" 47 - }
···
-11
public/tags/index.xml
··· 1 - <?xml version="1.0" encoding="utf-8" standalone="yes"?> 2 - <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 3 - <channel> 4 - <title>Tags on My New Hugo Site</title> 5 - <link>http://localhost:1313/tags/</link> 6 - <description>Recent content in Tags on My New Hugo Site</description> 7 - <generator>Hugo -- gohugo.io</generator> 8 - <language>en-us</language> 9 - <atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" /> 10 - </channel> 11 - </rss>
···
public/yo_20_arq4_small.png

This is a binary file and will not be displayed.

-4
resources/_gen/assets/css/base.scss_983d0fd8c6b35648423ca86087665cef.content
··· 1 - html:root{--accent: #23b0ff}:root{--accent-contrast-color: black;--article-link-color: var(inherit);--background: color-mix(in srgb, var(--accent) 2%, #1d1e28 98%);--border-color: rgba(255, 255, 255, 0.1);--color: white;--menu-color: white;--syntax-func-color: color-mix(in srgb, var(--accent) 70%, #999 30%);--syntax-var-color: color-mix(in srgb, var(--accent) 90%, transparent);--syntax-punctuation-color: white;--syntax-value-color: color-mix(in srgb, var(--accent), white);--syntax-comment-color: rgba(255, 255, 255, 0.3);--syntax-line-highlight-mix: color-mix(in srgb, var(--accent) 90%, #999 10%);--syntax-line-highlight-background-color: hsla(24, 20%, 50%, 0.4);--syntax-line-highlight-color: hsl(24, 20%, 95%);--syntax-line-highlight-box-shadow: white;--syntax-code-border-color: rgba(255, 255, 255, 0.1);--syntax-code-copy-button-background: hsla(0, 0%, 87.8%, 0.2);--syntax-code-copy-button-color: #bbb;--syntax-code-copy-button-box-shadow-color: rgba(0, 0, 0, 0.2)}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:400;src:url("../fonts/FiraCode-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:800;src:url("../fonts/FiraCode-Bold.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin:5px 0;text-decoration:none;text-align:center;border-radius:8;border:1px solid var(--accent);background:var(--accent);color:var(--accent-contrast-color);font:inherit;font-weight:bold;appearance:none;cursor:pointer;outline:none}button:hover,.button:hover,a.button:hover{background:color-mix(in srgb, var(--accent), transparent 10%)}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;color:var(--accent);background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none}input,textarea,select{background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:0;padding:10px;margin:5px 0;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:var(--color);outline:1px solid var(--color)}input:active,textarea:active,select:active{box-shadow:none}select{background:var(--background)}select option{background:var(--background)}::placeholder{color:color-mix(in srgb, var(--accent), transparent 50%)}input[type="checkbox"]{vertical-align:middle;padding:10px;box-shadow:inset 0 0 0 3px var(--background)}input[type="checkbox"]:checked{background:var(--accent)}.header{display:flex;flex-direction:column;position:relative}@media print{.header{display:none}}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:'';background:repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:0 0 auto;max-width:100%;text-decoration:none}.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.navigation-menu{margin:0}}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:0 0 auto;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}@media (max-width: 684px){.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}}.navigation-menu .spacer{flex-grow:1 !important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0 !important;color:var(--accent);user-select:none;cursor:pointer}.menu__subdrop--title{padding:5px}.menu__subdrop--list{list-style-type:unset}.menu__dropdown{--shadow-color: color-mix(in srgb, var(--background), transparent 20%);display:none;flex-direction:column;--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 2 - 10px 10px var(--shadow-color);position:absolute;background:var(--background);box-shadow:var(--shadow);color:var(--menu-color);border:2px solid;margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:0 0 auto}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer;display:none}@media (max-width: 684px){.menu--mobile .menu__trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu__dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer}@media (max-width: 684px){.menu--language-selector .menu__trigger{display:none}}.menu--language-selector .menu__dropdown{left:auto;right:0}.logo{display:flex;align-items:center;text-decoration:none;font-weight:bold;background:var(--accent);color:color-mix(in srgb, var(--accent), var(--accent-contrast-color) 90%);padding:5px 10px}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;background-color:var(--background);color:var(--color);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 684px){body{font-size:1rem}}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3,.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{line-height:1.3}.headings--one-size h1:not(first-child),.headings--one-size h2:not(first-child),.headings--one-size h3:not(first-child),.headings--one-size h4:not(first-child),.headings--one-size h5:not(first-child),.headings--one-size h6:not(first-child){margin-top:40px}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3{font-size:1.4rem}.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{font-size:1.2rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:var(--accent);color:var(--accent-contrast-color)}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code,kbd{font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;font-feature-settings:normal;background:color-mix(in srgb, var(--accent), transparent 80%);color:var(--accent);padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:transparent;padding:0;margin:0}pre{background:transparent !important;padding:20px 10px;margin:40px 0;font-size:.95rem !important;overflow:auto;border-top:1px solid rgba(255,255,255,0.1);border-bottom:1px solid rgba(255,255,255,0.1)}pre+pre{border-top:0;margin-top:-40px}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);margin:40px 0;padding:25px}@media (max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type:before{content:'>';display:block;position:absolute;left:-25px;color:var(--accent)}blockquote.twitter-tweet{position:relative;background:color-mix(in srgb, var(--accent), transparent 90%);font:inherit;color:inherit;border:1px solid var(--accent);padding-top:60px}blockquote.twitter-tweet p:before{content:''}blockquote.twitter-tweet:before{content:'> From Twitter:';position:absolute;top:20px;color:var(--accent);font-weight:bold}blockquote.twitter-tweet a{color:var(--accent)}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed var(--accent);padding:10px}th{color:var(--accent)}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media (max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol>li{counter-increment:li}ol>li:before{content:counter(li);position:absolute;right:calc(100% + 10px);color:var(--accent);display:inline-block;text-align:right}ol>li>ol{margin-left:38px}ol>li>ol>li{counter-increment:li}ol>li>ol>li:before{content:counters(li, ".") " "}mark{background:var(--accent);color:var(--accent-contrast-color)}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid rgba(255,255,255,0.1)}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media (max-width: 684px){.container{padding:20px}}@media print{.container{display:initial}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}hr{width:100%;border:none;background:var(--border-color);height:1px}.hidden{display:none}sup{line-height:0}.index-content{margin-top:20px}.framed{border:1px solid var(--accent);padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}.post:not(:last-of-type){border-bottom:1px solid var(--border-color)}.post-meta{font-size:1rem;margin-bottom:10px;color:color-mix(in srgb, var(--accent), transparent 30%)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{--border: 3px dotted var(--accent);position:relative;color:var(--accent);margin:0 0 15px;padding-bottom:15px;border-bottom:var(--border)}.post-title:after{content:'';position:absolute;bottom:2px;display:block;width:100%;border-bottom:var(--border)}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-content a{color:var(--article-link-color)}.post-cover{border:20px solid var(--accent);background:transparent;margin:40px 0;padding:20px}@media (max-width: 684px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:var(--accent)}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{color:color-mix(in srgb, var(--accent), transparent 10%);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover a,h2:hover a,h3:hover a,h4:hover a{visibility:visible}.footnotes{color:color-mix(in srgb, var(--accent), transparent 50%)}figure:has(.post-cover){margin:40px 0}figure:has(.post-cover)>.post-cover{margin:0}figure:has(.post-cover)>figcaption{margin-top:0}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background);color:color-mix(in srgb, var(--accent), transparent 70%);font-size:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;padding:0;appearance:none}@media (max-width: 684px){.button{flex:1}}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 0;flex-grow:0;opacity:.5;display:flex;justify-content:center}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;font-size:1rem;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}#banner{width:100%;height:2rem;display:grid;grid-template-columns:1fr auto;background:var(--accent)}#banner span{display:flex;align-items:center;justify-content:center}#banner a{color:var(--accent-contrast-color);display:inline}#banner>button{padding:0 5px 0 0;margin:0}code[class*="language-"],pre[class*="language-"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#2d2d2d}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user="root"]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus{color:inherit;text-decoration:none}code.language-css,code.language-scss,.token.boolean,.token.string,.token.entity,.token.url,.language-css .token.string,.language-scss .token.string,.style .token.string,.token.attr-value,.token.keyword,.token.control,.token.directive,.token.statement,.token.regex,.token.atrule,.token.number,.token.inserted,.token.important{color:var(--syntax-value-color, color-mix(in srgb, var(--accent), white)) !important}.token.tag-id,.token.atrule-id,.token.operator,.token.unit,.token.placeholder,.token.variable,.token.tag,.token.attr-name,.token.namespace,.token.deleted,.token.property,.token.class-name,.token.constant,.token.symbol{color:var(--syntax-var-color, color-mix(in srgb, var(--accent) 90%, transparent)) !important}.token.property,.token.function,.token.function-name,.token.deleted,code[class*="language-"],.command-line-prompt>span:before{color:var(--syntax-func-color, color-mix(in srgb, var(--accent) 70%, #999 30%)) !important}.token.selector,.token.tag,.token.punctuation{color:var(--syntax-punctuation-color)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--syntax-comment-color) !important}.token.namespace{opacity:0.7 !important}pre[data-line]{position:relative}pre[class*="language-"]{margin:0;padding:0;overflow:auto}.line-highlight{position:absolute;left:0;right:0;padding:0;margin:0;background:color-mix(in srgb, var(--syntax-line-highlight-mix), transparent 92%);pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;left:0.6em;min-width:1em;padding:0 0.5em;background-color:var(--syntax-line-highlight-background-color);color:var(--syntax-line-highlight-color);font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:0.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px var(--syntax-line-highlight-box-shadow)}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:0.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}.code-toolbar{--code-margin: 40px;position:relative;margin:var(--code-margin) 0;padding:20px;border:1px solid var(--syntax-code-border-color)}.code-toolbar+.code-toolbar,.code-toolbar+.highlight,.code-toolbar+.highlight .code-toolbar{border-top:0;margin-top:calc(-1 * var(--code-margin))}.code-toolbar pre,.code-toolbar code{border:none}.code-toolbar code{display:block;color:inherit}.code-toolbar>.toolbar button{font-size:0.8em !important;background:var(--syntax-code-copy-button-background) !important;color:var(--syntax-code-copy-button-color) !important;box-shadow:0 2px 0 0 var(--syntax-code-copy-button-box-shadow-color) !important;border-radius:0 !important;margin:6px !important;padding:10px !important;user-select:none}.collapsable-code{--border-color: color-mix(in srgb, var(--accent) 90%, #999 10%);position:relative;width:100%;margin:40px 0}.collapsable-code input[type="checkbox"]{position:absolute;visibility:hidden}.collapsable-code input[type="checkbox"]:checked~pre,.collapsable-code input[type="checkbox"]:checked~.code-toolbar pre{height:0;padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar{padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar .toolbar{display:none}.collapsable-code input[type="checkbox"]:checked~label .collapsable-code__toggle:after{content:attr(data-label-expand)}.collapsable-code label{position:relative;display:flex;justify-content:space-between;min-width:30px;min-height:30px;margin:0;border-bottom:1px solid var(--border-color);cursor:pointer}.collapsable-code__title{flex:1;color:var(--accent);padding:3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:var(--accent);border:1px solid var(--border-color);border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code__toggle{color:var(--accent);font-size:16px;padding:3px 10px}.collapsable-code__toggle:after{content:attr(data-label-collapse)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}.collapsable-code .code-toolbar{margin:0}.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:var(--accent)}.terms ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:var(--accent)}body .gist .blob-num,body .gist .blob-code-inner{border:none} 3 - 4 - /*# sourceMappingURL=styles.css.map */
···
-1
resources/_gen/assets/css/base.scss_983d0fd8c6b35648423ca86087665cef.json
··· 1 - {"Target":"styles.css","MediaType":"text/css","Data":{}}
···
static/favicon.png

This is a binary file and will not be displayed.