1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4094],{13303:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/blog/[...slug]",function(){return s(34761)}])},53594:function(e,t,s){"use strict";var n=s(85893);s(67294);var a=s(5152);let r=s.n(a)()(()=>s.e(3958).then(s.bind(s,83958)),{loadableGenerated:{webpack:()=>[83958]},ssr:!1});t.Z=e=>{let{title:t,subtitle:s,children:a}=e;return(0,n.jsxs)("header",{className:"relative w-full h-80 md:h-[28rem] overflow-hidden border-b border-moon-silver/10",children:[(0,n.jsx)(r,{}),(0,n.jsx)("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-moon-deep pointer-events-none z-[1]"}),(0,n.jsxs)("div",{className:"relative z-10 flex flex-col items-center justify-center h-full px-6 text-center",children:[(0,n.jsx)("h1",{className:"font-pixel text-moon-glow text-5xl md:text-7xl leading-none drop-shadow-[0_0_12px_rgba(255,248,214,0.25)]",children:t}),s&&(0,n.jsx)("p",{className:"mt-2 font-pixel text-moon-mist text-lg md:text-2xl",children:s}),a]})]})}},34761:function(e,t,s){"use strict";s.r(t),s.d(t,{__N_SSG:function(){return y},default:function(){return v}});var n=s(85893),a=s(65079),r=s(41664),l=s.n(r),c=s(67294),i=s(10423),o=JSON.parse('{"scopeName":"source.type-c","name":"type-c","fileTypes":["tc"],"patterns":[{"include":"#comments"},{"include":"#keywords"},{"include":"#strings"},{"include":"#numbers"}],"repository":{"comments":{"patterns":[{"name":"comment.line.double-slash.type-c","match":"//.*","captures":{"0":{"name":"comment.line.double-slash"}}},{"begin":"/\\\\*","end":"\\\\*/","name":"comment.block.type-c","captures":{"0":{"name":"comment.block.documentation"}}}]},"keywords":{"patterns":[{"name":"keyword.control.type-c","match":"\\\\b(as|await|break|extern|class|continue|const|variant|do|else|mut|enum|false|from|for|foreach|fn|if|import|in|is|interface|i8|i16|i32|i64|u8|u16|u32|u64|f32|f64|bool|void|string|char|spawn|let|new|null|return|this|static|strict|struct|match|true|type|while)\\\\b"}]},"data-types":{"patterns":[{"name":"storage.type.type-c","match":"\\\\b(i8|u8|i16|u16|i32|u32|u64|i64|f32|f64|bool|thread|promise)\\\\b"}]},"strings":{"patterns":[{"name":"string.quoted.double.type-c","match":"\\"(\\\\\\\\.|[^\\"])*\\""}]},"numbers":{"patterns":[{"name":"constant.numeric.char.type-c","match":"\'[^\']\'"},{"name":"constant.numeric.binary.type-c","match":"0b[01]+"},{"name":"constant.numeric.octal.type-c","match":"0o[0-7]+"},{"name":"constant.numeric.hex.type-c","match":"0x[0-9A-Fa-f]+"},{"name":"constant.numeric.float.type-c","match":"[0-9]+\\\\.[0-9]+f"},{"name":"constant.numeric.double.type-c","match":"[0-9]+\\\\.[0-9]+"},{"name":"constant.numeric.int.type-c","match":"\\\\b[0-9]+\\\\b"}]},"operators":{"patterns":[{"name":"keyword.operator.type-c","match":"\\\\+|-|\\\\*|/|%|=|==|!=|<|>|<=|>=|&&|\\\\|\\\\||!|\\\\^|&|\\\\||~|<<|>>|\\\\+="}]},"punctuation":{"patterns":[{"name":"punctuation.type-c","match":"\\\\{|\\\\}|\\\\[|\\\\]|\\\\(|\\\\)|\\\\.|,|;|:|->"}]}}}'),m=e=>{let{code:t,language:s}=e,[a,r]=(0,c.useState)('<span className="loading loading-infinity loading-lg"></span>'),l=t;for(;"\n"===l[l.length-1];)l=l.slice(0,-1);return(0,c.useEffect)(()=>{(async()=>{try{let e=await (0,i.FP)({langs:[o,"typescript","javascript","c","cpp","json","bash","python"],themes:["vitesse-dark"],langAlias:{tc:"type-c"}});e.getLoadedLanguages();let t=await e.codeToHtml(l,{lang:s,theme:"vitesse-dark"});r(t)}catch(e){console.error("Error highlighting code with Shiki:",e)}})()},[t,s]),(0,n.jsx)("div",{className:"w-full",dangerouslySetInnerHTML:{__html:a}})},p={h1:e=>(0,n.jsx)("h1",{...e}),h2:e=>(0,n.jsx)("h2",{...e}),h3:e=>(0,n.jsx)("h3",{...e}),h4:e=>(0,n.jsx)("h4",{...e}),h5:e=>(0,n.jsx)("h5",{...e}),h6:e=>(0,n.jsx)("h6",{...e}),p:e=>(0,n.jsx)("p",{className:"mb-2",...e}),ul:e=>(0,n.jsx)("ul",{className:"list-disc pl-5 mb-2",...e}),li:e=>(0,n.jsx)("li",{...e}),a:e=>{let{href:t,children:s,...a}=e;return(0,n.jsx)(l(),{href:t||"",className:"text-blue-600 hover:text-blue-800 visited:text-purple-600",...a,children:s})},table:e=>(0,n.jsx)("div",{className:"overflow-x-auto",children:(0,n.jsx)("table",{className:"table table-xs",...e})}),thead:e=>(0,n.jsx)("thead",{...e}),tbody:e=>(0,n.jsx)("tbody",{...e}),tr:e=>(0,n.jsx)("tr",{...e}),th:e=>(0,n.jsx)("th",{className:"px-6 py-3 text-left text-xs font-medium uppercase tracking-wider",...e}),td:e=>(0,n.jsx)("td",{className:"px-6 py-4 whitespace-nowrap",...e}),code:e=>(0,n.jsx)("span",{className:"badge badge-neutral",...e}),pre:e=>{let t=(e.children.props.className||"").match(/language-(\w+)/),s=t?t[1]:"plaintext",a=e.children.props.children;return(0,n.jsx)(m,{code:a,language:s})}},d=s(52091),h=s(19042),u=s(5152);let x=s.n(u)()(()=>s.e(4089).then(s.t.bind(s,54089,23)),{loadableGenerated:{webpack:()=>[54089]},ssr:!1});var b=s(9008),f=s.n(b),g=s(53594);let j=()=>{let e=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let t=document.createElement("script");Object.entries({src:"https://utteranc.es/client.js",repo:"praisethemoon/blog","issue-term":"pathname",theme:"photon-dark",crossOrigin:"anonymous",defer:!0}
1).forEach(e=>{let[s,n]=e;t.setAttribute(s,n)}),setTimeout(()=>{var s;null===(s=e.current)||void 0===s||s.append(t)},300)},[]),(0,n.jsx)("div",{ref:e})};var y=!0,v=e=>{let{source:t,meta:s}=e;return(0,n.jsxs)("div",{className:"starfield-bg",children:[(0,n.jsx)(f(),{children:(0,n.jsx)("title",{children:s.title})}),(0,n.jsxs)(g.Z,{title:s.title,subtitle:s.date,children:[s.tags&&s.tags.length>0&&(0,n.jsx)("div",{className:"mt-4 flex flex-wrap justify-center gap-2",children:s.tags.map(e=>(0,n.jsx)("span",{className:"font-pixel text-sm px-2 py-0.5 border border-moon-silver/30 text-moon-mist bg-moon-deep/40 backdrop-blur-sm",children:e},e))}),(0,n.jsxs)("nav",{className:"mt-4 font-pixel text-base text-moon-mist flex items-center justify-center gap-2",children:[(0,n.jsxs)(l(),{href:"/blog",className:"hover:text-moon-glow inline-flex items-center gap-1",children:[(0,n.jsx)(d.qL0,{})," blog"]}),(0,n.jsx)("span",{children:"/"}),(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-moon-silver",children:[(0,n.jsx)(h.vrJ,{})," ",s.title]})]})]}),(0,n.jsx)("article",{className:"max-w-3xl mx-auto px-6 pt-12 pb-24",children:(0,n.jsx)("div",{className:"prose prose-invert lg:prose-md mx-auto",children:(0,n.jsx)(a.R,{...t,components:{GistEmbed:x,...p}})})}),(0,n.jsx)("section",{className:"border-t border-moon-silver/10 bg-moon-night/40 py-12 px-6",children:(0,n.jsx)("div",{className:"max-w-3xl mx-auto",children:(0,n.jsx)(j,{})})}),(0,n.jsx)("section",{className:"py-10 px-6 text-center",children:(0,n.jsx)("p",{className:"max-w-3xl mx-auto text-sm text-moon-mist/80",children:"Articles written in this blog are my own opinions and do not reflect the views of my employer. Content is original unless stated otherwise, and licensed CC BY 4.0. Some passages may be AI-polished for clarity."})})]})}}},function(e){e.O(0,[4321,4878,2888,9774,179],function(){return e(e.s=13303)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.